WPFのWebBrowserコントロールでjQueryを動かしてみる
WPFのWebBrowserクラスには、スクリプトを実行することができるInvokeScriptというメソッドがあります。これでjQueryを使えるようにしようというのが今回の魂胆です。
一筋縄ではいかない
InvokeScriptメソッドでは、直接document.getElementById("hoge")みたいなのが使えません。やろうものならたちどころになんかよくわからない例外とエラーコードをはいてくれます。あれこれ試行錯誤した結果、
evalでごり押しすれば何とかなる
という結論に至りました。
WebBrowser browser = this.browser; browser.InvokeScript("eval", @"var s = document.CreateElement('script'); s.src = 'file:///path/to/jquery.js'; document.body.AppendChild(s);");
これではれてjQueryが使えるようになりました。ただし、すぐ使おうとすると「$は定義されていません」とか言われてしまうので、ロードが終わった頃合を見計らわないといけないようです。すごくめんどくさい。
多分同じようにほかのJavaScriptも読み込ませることができるので、この調子でどんどんスクリプトを読み込ませることができるわけですね。