ratio - rational - irrational

« ひきこもりつつ、Ruby。 | Main | String#succ問題への回答 »

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はあるけれど、ダメ。


トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/415

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2006 Yugui

Powered by Movable Type 3.2-ja-2