Javascript InvokeScript工作,但网页回复;“无效参数”;

Javascript InvokeScript工作,但网页回复;“无效参数”;,javascript,c#,webbrowser-control,Javascript,C#,Webbrowser Control,我的脚本函数已在当前加载的文档中定义 我正在使用 WebBrowser.InvokeScript Method (String, Object[]) 如中所述,使用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',

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

我正在使用

WebBrowser.InvokeScript Method (String, Object[]) 
如中所述,使用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>
但是,这不起作用,我从MessageBox中的网页上收到一条消息,说明提供给它的参数无效


但是,正如您所看到的,我提供了正确的参数。我正在使用WebBrowserControl,并修改了app的注册表值,以确保它模拟IE11。我的假设是,您需要在不带内部单引号的情况下进行传递,因为JavaScript函数需要字符串SDAH,例如,不是字符串“SDAH”

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

例如,我正在使用:

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

C#代码:

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对象作为参数

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

sender.InvokeScript("gotoAnchor", new string[] { anchorId });
function gotoAnchor(anchor) {
    var myanchor = anchor;
    var target_top=jQuery('#' + myanchor).offset().top-45;
    $('html, body').animate({ scrollTop: target_top }, 600);
}