InvokeScript工作,但网页回复“无效参数”
本文关键字:无效 参数 无效参数 回复 工作 网页 InvokeScript | 更新日期: 2023-09-27 18:18:57
我的脚本函数已经在当前加载的文档中定义了
我使用
WebBrowser.InvokeScript Method (String, Object[])
在MSDN中指定,以调用一个javascript方法与这里在href中指定的相同的参数。
<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>
My Code is:
webBrowser1.Document.InvokeScript("jpBook", new object[] { "$('#13185-SL-CK-0')", "'13185'","'SDAH'","'DBG'","'24-10-2015'","'SL'","'CK'","3","false" });
然而,这不起作用,我在MessageBox中从网页得到一个消息,提供给它的参数是无效的。
然而,正如你所看到的,我已经提供了正确的参数。我正在使用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对象作为参数希望我的假设是正确的,这对你来说是可行的