0

私はWebBrowserWinForms バージョンとは異なる WPF コントロールを使用していますが、この優れた Web サイトの多くの推奨事項は WPF では機能しません。

btnSubmit_onclick()Web ページの JavaScript 関数を上書きするにはどうすればよいですか?

この関数は、バイパスしたい確認ダイアログ (「よろしいですか?」など) を生成します。btnSubmit_onclick()基本的に、既存の関数を置き換える新しい関数を挿入したいので、煩わしい確認ダイアログを省略できます。MSHTML とすべてのページ オブジェクトにアクセスできますが、ページのヘッダーにスクリプトを挿入するのに苦労しています。これまでのところ、私は持っています:

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document;
mshtml.IHTMLElementCollection heads = doc.all.tags("head") as mshtml.IHTMLElementCollection;
mshtml.IHTMLElement head = heads.item(null, 0) as mshtml.IHTMLElement;
mshtml.IHTMLElement se = doc.createElement("script") as mshtml.IHTMLElement;
se.innerHTML = "function btnSubmit_onclick() { alert('here we are'); }";

しかし、他のスクリプトよりも先に、この新しいスクリプト要素をヘッド オブジェクトに挿入する必要があります。これにより、btnSubmit_onclick()ダウンストリームの既存の関数が上書きされることを願っています。

DEFER プロパティを使用してもヘッダーにスクリプトを挿入することを拒否する head.injectAdjusentHTML を試してみましたが失敗しました。

どうすればできますか?

4

2 に答える 2

1

他の前に注入するのではなく、頭の最後に追加する必要があると思います。私は JavaScript はラスト ワン ウィン型の取引だと思います。

于 2010-06-17T21:06:41.910 に答える
1

私はこれをテストしていません、ただの推測です:これを試してください:

// For this code to work: add the Microsoft.mshtml .NET reference
mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2;
doc.parentWindow.execScript("document.body.onsubmit=new function(){ alert('here we are'); };");
于 2011-02-25T23:37:32.717 に答える