C# で BHO (Browser Helper Object) を作成しました。これは、Web ページの電話番号を検出し、その横にハイパーリンクを含む画像を配置します。BHO は基本的に、正規表現文字列を使用して電話番号を検索し、その横に画像を追加する JavaScript を挿入します。
これは関連するコードです
public void OnDocumentComplete(object pDisp, ref object URL)
{
HTMLDocument document = (HTMLDocument)webBrowser.Document;
IHTMLElement head = (IHTMLElement)((IHTMLElementCollection)
document.all.tags("head")).item(null, 0);
IHTMLScriptElement scriptObject =
(IHTMLScriptElement)document.createElement("script");
scriptObject.src = "\nhttp://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js";
((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject);
IHTMLScriptElement scriptObject2 =
(IHTMLScriptElement)document.createElement("script");
scriptObject2.text = "\nwindow.onload = function()"+
"{"+
"$('body').html( $('body').html().replace(/(\\d\\d\\d\\d\\s\\d\\d\\d\\s\\d\\d\\d)/g,'$1 <a href=\"http://www.somewebsite.com\"><img src=\"image.png\" border=\"0\"></a>') );"
+"}"+
"\n\n";
((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject2);
}
電話番号がほとんどない非常に単純なページで、IE の BHO をテストしました。期待どおりに動作します。しかし、Web 上の他のページで BHO をテストすると、次のエラーが表示されます。
Microsoft JScript ランタイム エラー: オブジェクトはこのプロパティまたはメソッドをサポートしていません
また
Microsoft JScript ランタイム エラー: アクセス許可が拒否されました
他のいくつかのページで Microsoft JScript ランタイム エラーが発生します。これは、ページに JavaScript を挿入することが許可されていないということですか? 何が原因でしょうか? これが正しい方法であることを願っています。