对于我可能使用的任何用词不当,我立即道歉。
我有一系列由 PHP 生成的网页,我正在使用 WebBrowser 控件进行操作。这些页面定义了隐藏在正文中的 JavaScript 函数(这对我来说很愚蠢,我没有编写它们,我只需要使用它们)。
是否可以使用 Document.InvokeScript 方法访问这些函数,如果没有,我可以做些什么来访问它们?
对于我可能使用的任何用词不当,我立即道歉。
我有一系列由 PHP 生成的网页,我正在使用 WebBrowser 控件进行操作。这些页面定义了隐藏在正文中的 JavaScript 函数(这对我来说很愚蠢,我没有编写它们,我只需要使用它们)。
是否可以使用 Document.InvokeScript 方法访问这些函数,如果没有,我可以做些什么来访问它们?
Windows 窗体的实现使用 IDispatch.GetIDsOfNames在脚本引擎的顶级命名项中查找函数名称的完全匹配。对于 MSHTML 的活动脚本接口的 JScript 实现,顶级命名项是
您实际上并不需要将新的命名项添加到脚本引擎(如果您真的愿意,可以通过 IDispatchEx 进行),有很多方法可以使用现有的命名项执行代码,例如
您可以使用上述之一作为在 HtmlDocument.InvokeScript 中调用的脚本方法的名称,并在附加参数中传递代码。
是的 - JavaScript 中的所有函数都可以同样访问。
笔记
window.FuncitionName(...)
在 JavaScript 中使用来调用——你也无法通过 InvokeScript 调用此类函数。这种“私人”功能的示例如下:
$(function(){
....
function MyHiddenFunction() {
// you can't call be from outside!!!!
}
});
我找到了答案(发生了一些事情,我无法再访问我的帐户,所以如果有人也能回答我,那就太好了),但答案是:WebBrowser 使用 IE7,而 IE7 是一团糟。
IE9 执行脚本就好了。所以我不得不强制它使用IE9
这是通过使用此处给出的答案完成的:
所以……万岁!