对于我可能使用的任何用词不当,我立即表示歉意。
我有一系列由 PHP 生成的网页,我正在使用 WebBrowser 控件对其进行操作。这些页面定义了嵌入在正文中的 JavaScript 函数(这对我来说很愚蠢,我没有编写它们,我只需要使用它们)。
是否可以使用 Document.InvokeScript 方法访问这些函数?如果不能,我该如何访问它们?
最佳答案
Windows 窗体的实现使用 IDispatch.GetIDsOfNames 来查找 top level named items 中函数名称的精确匹配。 script engine的。对于 MSHTML 的 JScript 实现 active script interfaces ,顶级命名项是
- jscript globals 的成员(请注意,假设您的代码是用 jscript 编写的,对于 vb 脚本代码可见的全局变量,请检查 VBScript Language Reference )
- the window object 的成员(有没有想过为什么可以直接使用 document.write 或 XMLHttpRequest?)
您实际上并不需要向脚本引擎添加新的命名项(如果您确实愿意,可以通过 IDispatchEx 执行此操作),例如,有多种方法可以使用现有命名项执行代码
- eval来自 jscript 全局变量的函数
- execScript来自窗口对象的函数
- setTimeout来自窗口对象的函数
您可以使用上述之一作为要在 HtmlDocument.InvokeScript 中调用的脚本方法的名称,并在其他参数中传递代码。
关于c# - 我可以在未在 header 元素中定义的 JavaScript 函数上使用 WebBrowser.Document.InvokeScript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14507181/