6

我正在尝试将 CefSharp WebView 添加到我的 WPF 应用程序中,以代替我们使用的原始 WebBrowsers。WebBrowser 有一个 InvokeScript 函数 ( http://msdn.microsoft.com/en-us/library/cc452443(v=vs.110).aspx ) 它允许您调用 JavaScript 函数并可选择传入一个 obj 数组该JS函数的输入。

有没有办法用 CefSharp WebView 做类似的事情,我可以将输入参数传递给 JavaScript 函数?例如,我可以这样做:

this.webBrowser.InvokeScript("scriptName", input0, input1, input2);

对于 WebBrowser,是否有任何等效功能或多个功能可以使用 CefSharp WebView 实现这一点?

4

3 回答 3

5

我想出了如何做我想做的事……而且相对简单。

如果您想要 WebBrowser 的 InvokeScript 函数的功能

this.webBrowser.InvokeScript("functionName", input0, input1, input2);

使用 CefSharp WebView 那么你只需要做这样的事情:

webView.ExecuteScript(String.Format("functionName({0},{1},{2});", input0, input1, input2));

您必须确保正确转义任何字符串参数,因为您正在调用一个 javascript 函数,其中输入将填充您的值,因此将被视为字符串文字。

如果您真的不想更改代码并且正在用 WebView 替换 WebBrowser,那么您可以创建一个扩展方法,将“InvokeScript”添加到 WebView。

于 2014-08-12T22:28:52.867 回答
3

我试过上面的功能,没有用。终于弄清楚了,每个占位符都缺少引号。

像这样的东西:

webView.ExecuteScript(String.Format("functionName('{0}','{1}','{2}');", input0, input1, input2));
于 2015-05-25T06:34:27.453 回答
2

您可以从 webView 执行 JavaScrip

webView.ExecuteScript("document.getElementById...");
于 2014-08-12T16:45:45.693 回答