我可以在未在头元素中定义的JavaScript函数上使用WebBrowser.Document.InvokeScript吗?

时间:2013-01-24 17:27:50

标签: c# php javascript .net-4.0 webbrowser-control

我立即为我可能使用的任何误解人道歉。

我有一系列由PHP生成的网页,我正在使用WebBrowser控件进行操作。这些页面定义了隐藏在体内的JavaScript函数(这对我来说很愚蠢,我没有编写它们,我只需要使用它们。)

是否可以使用Document.InvokeScript方法访问这些函数,如果没有,我可以做些什么来访问它们?

3 个答案:

答案 0 :(得分:1)

Windows窗体的实现使用IDispatch.GetIDsOfNames在top level named itemsscript engine中查找函数名称的完全匹配。对于MSHTML的active script interfaces的JScript实现,顶级命名项是

你真的不需要在脚本引擎中添加新的命名项(如果你真的想通过IDispatchEx可以这样做),有许多方法可以使用现有的命名项来执行代码,例如

您可以使用上面的一个作为脚本方法的名称来调用HtmlDocument.InvokeScript并在其他参数中传递代码。

答案 1 :(得分:0)

是的 - JavaScript中的所有功能都可以同等访问。

注释

  • 某些JavaScript文件可能不会很早加载 - 您需要正确等待(文档就绪/完成,或者从页面/简单超时自定义通知),直到所有脚本都加载完毕。
  • 可以使JavaScript函数“私有” - 在JavaScript中使用window.FuncitionName(...)无法调用 - 您也无法通过InvokeScript调用此类函数。

以下“私人”功能的示例:

$(function(){  
   ....
   function MyHiddenFunction() {
     // you can't call be from outside!!!!
   }
});

答案 2 :(得分:0)

我找到了答案(发生了一些事情,我再也无法访问我的帐户了,所以如果有人能够回答我那也会膨胀)但答案是这样的: WebBrowser使用IE7和IE7是一块废话。

IE9执行脚本就好了。 所以我必须强迫它使用IE9

这是通过使用这里给出的答案来完成的:

WebBrowser control and JavaScript errors

所以......万岁!

相关问题