我如何可以覆盖使用WPF web浏览器在网页上的btnSubmit_onclick javascri

2019-10-28 20:01发布

我用WPF工作WebBrowser控件是从的WinForms版本,并从这个优秀的网站根本就没有在WPF工作的许多建议不同。

我怎么能覆盖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'); }";

但现在我需要先于其他其他脚本注入这个新的脚本元素为头的对象,我希望它会owerwrite现有btnSubmit_onclick()下游功能。

我尝试失败其head.injectAdjusentHTML拒绝注入任何脚本到页眉即使我用DEFER属性。

我该怎么做?

Answer 1:

我认为你需要将它添加到头部的结束,而不是在别人面前注入它。 我认为JavaScript是一种最后一胜的交易类型。



Answer 2:

我还没有测试这一点,只是一个猜测:试试这个:

// 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'); };");


文章来源: How can I overwrite the btnSubmit_onclick javascript function on a web page using the WPF WebBrowser?