IE(本体またはブラウズコンポーネント)にHTMLデータを表示させたい。そのための方法いろいろ。タブブラウザを作るとか、特に2chブラウザを作るとかするときに必要になりがち
- IWebBrowser2::Navigate2()を使う
-
- 開くためにURLが必要。URLを持たないメモリー上のデータには使えない
- 新規にスキームと、そのハンドラを登録してしまえばなんとかなることはなる。
- ハンドラの登録はどうやる? それっぽいレジストリキーはあるけれど、モニカともちょっと違う感じ。資料どこ?
- セキュリティホールを作ってるだけかも。
- 労多くして、危うく、実り少なし
- 拡張子チェックが働くのでContent-Type判別に失敗する可能性が低い
- URLに応じてセキュリティチェックが機能する。これは目的に依って一長一短。ScriptやActiveX付きデータを流し込むときは不便。
- documentオブジェクトをIPersistStreamで初期化
-
- 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はあるけれど、ダメ。