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);
}