gpt4 book ai didi

c# - 使用 WebBrowser.Document.InvokeScript 调用 javascript 对象方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:53 26 4
gpt4 key购买 nike

在我的 WinForms 应用程序中,我需要从我的 WebBrowser 控件调用 javascript 函数。我使用了 Document.InvokeScript,它可以完美地单独使用函数,例如

Document.InvokeScript("function").

但是当我想调用 javascript 对象方法时,例如

Document.InvokeScript("obj.method")

这是行不通的。有没有办法让它工作?或者这个问题的不同解决方案? 无需更改 javascript 代码中的任何内容!

提前致谢:)

最佳答案

documentation 中的示例不包括括号。

private void InvokeScript()
{
if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
String str = doc.InvokeScript("test").ToString() ;
Object jscriptObj = doc.InvokeScript("testJScriptObject");
Object domOb = doc.InvokeScript("testElement");
}
}

尝试

Document.InvokeMethod("obj.method");

请注意,如果使用 HtmlDocument.InvokeScript Method (String, Object[]),则可以传递参数.

编辑

看起来您不是唯一遇到此问题的人:HtmlDocument.InvokeScript - Calling a method of an object .您可以像该链接的海报所建议的那样制作“代理功能”。基本上你有一个调用对象函数的函数。这不是一个理想的解决方案,但它肯定会奏效。我会继续看看这是否可行。

关于同一问题的另一篇文章:Using WebBrowser.Document.InvokeScript() to mess around with foreign JavaScript . C. Groß 在 CodeProject 上提出的有趣解决方案:

private string sendJS(string JScript) {
object[] args = {JScript};
return webBrowser1.Document.InvokeScript("eval",args).ToString();
}

您可以在 HtmlDocument 上创建一个扩展方法并调用它来运行您的函数,仅使用这个新函数您将在您传入的字符串中包含括号、参数和整个九码(因为它只是传递给评估)。

看起来 HtmlDocument 不支持调用现有对象的方法。只有全局函数。 :(

关于c# - 使用 WebBrowser.Document.InvokeScript 调用 javascript 对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com