2009-02-26 26 views
0

私はWPF WebBrowserのコントロールをWinFormsのバージョンとは異なるものとして扱っています。この優れたWebサイトの多くの推奨事項は、単にWPFでは動作しません。WPF WebBrowserを使用してWebページでbtnSubmit_onclick javascript関数を上書きする方法はありますか?

ウェブページのbtnSubmit_onclick() 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をうまく試行できませんでした。

どうすればいいですか?

答えて

1

私はあなたが頭の末尾にそれを他のものの前に挿入するのではなく、それを追加する必要があると思います。私はjavascriptが最後の勝利のタイプの取引だと信じています。私はこれをテストしたhaventは

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'); };"); 
関連する問題