0

我正在使用与WebBrowserWinForms 版本不同的 WPF 控件,并且来自这个优秀网站的许多建议在 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'); }";

但是现在我需要在其他脚本之前将这个新的脚本元素注入到头对象中,我希望它会在btnSubmit_onclick()下游覆盖现有的函数。

我没有成功尝试 head.injectAdjusentHTML,即使我使用 DEFER 属性,它也拒绝将任何脚本注入到标题中。

我该怎么做?

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 回答