InvokeScript 有效,但网页回复 "invalid argumment"

InvokeScript works but WebPage replies "invalid argumment"

我的脚本函数已经在当前加载的文档中定义

我正在使用

WebBrowser.InvokeScript Method (String, Object[]) 

MSDN 中指定的那样,使用 href.

中指定的相同参数调用 javascript 方法
<a style="cursor: auto ! important;" id="13185-SL-CK-0" href="javascript:jpBook($('#13185-SL-CK-0'),'13185','SDAH','DBG','24-10-2015','SL','CK',3,false);" tabindex="1">Book Now</a>

我的密码是:

webBrowser1.Document.InvokeScript("jpBook", new object[] { "$('#13185-SL-CK-0')", "'13185'","'SDAH'","'DBG'","'24-10-2015'","'SL'","'CK'","3","false" });

但是这不起作用,我从 MessageBox 中的 WebPage 收到一条消息,指出提供给它的参数无效。

但是如您所见,我提供了正确的 arguments.I 我正在使用 WebBrowserControl 并修改了应用程序的注册表值以确保它模拟 IE11

我的假设是你需要在没有内部单引号的情况下传递,因为 JavaScript 函数需要一个字符串 SDAH 例如不是字符串 'SDAH'

我没有使用完全相同的 api 但在我的项目中,我在 WebView 上调用脚本,从一个变量传递一个字符串,该变量只是一个没有单引号的普通字符串,也在寻找MSDN 示例看起来他们在做同样的事情。

例如我正在使用:

anchorId 只是一个简单的字符串变量,如 "Test1234"

C#代码:

sender.InvokeScript("gotoAnchor", new string[] { anchorId });

Javascript代码

function gotoAnchor(anchor) {
    var myanchor = anchor;
    var target_top=jQuery('#' + myanchor).offset().top-45;
    $('html, body').animate({ scrollTop: target_top }, 600);
}

如果我是你,我会先尝试一个只有一个参数的简单函数,看看它是否有效,例如传递一个字符串并在 html 元素上写一些文本,然后尝试数字和布尔值,最后我也会传递第一个

$('#13185-SL-CK-0' 只喜欢这个 "13185-SL-CK-0"

并将修改 js 函数以查找内部元素,因为它现在可能期望 jquery 对象作为参数

希望我的假设是正确的,这对你有用