世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2006年04月27日

Internet Explorerへのデータの読み込み方法色々

IE(本体またはブラウズコンポーネント)にHTMLデータを表示させたい。そのための方法いろいろ。タブブラウザを作るとか、特に2chブラウザを作るとかするときに必要になりがち

IWebBrowser2::Navigate2()を使う
  • 開くためにURLが必要。URLを持たないメモリー上のデータには使えない
    • 新規にスキームと、そのハンドラを登録してしまえばなんとかなることはなる。
    • ハンドラの登録はどうやる? それっぽいレジストリキーはあるけれど、モニカともちょっと違う感じ。資料どこ?
    • セキュリティホールを作ってるだけかも。
    • 労多くして、危うく、実り少なし
  • 拡張子チェックが働くのでContent-Type判別に失敗する可能性が低い
  • URLに応じてセキュリティチェックが機能する。これは目的に依って一長一短。ScriptやActiveX付きデータを流し込むときは不便。
documentオブジェクトをIPersistStreamで初期化
  • CreateStreamOnHGlobal()を使えばメモリー上からも文書を読み込める。datファイルからHTMLを作るときとかに便利
  • HTTPヘッダも拡張子も無いので、IEの勝手な判断でソースが表示されてしまうケースがあった。
  • ファイルから読むにはSHCreateStreamOnFileを使用
  • CAxStreamOnXXX系クラスが使える?
documentオブジェクトをIPersistMonikerで初期化
IHTMLDocument2::write()
IEが持っているオブジェクト参照を一端解放してから再レンダリングする模様。文書内のスクリプトとユーザーコードとのやりとりにwindow.externalプロパティを使っている場合、タイミングによってはwindow.externalがnull。http://www.csharphelp.com/board2/read.html?f=1&i=32994&t=32994&v=f参照。
document.getElementByTagname("html").outerHTMLを設定
HTML要素のouterHTMLプロパティはread-onlyなのでダメ。インターフェース定義にはput_outerHTMLはあるけれど、ダメ。

トラックバック

http://yugui.jp/articles/417/ping

現在のところトラックバックはありません

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system