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

InvokeScript works but WebPage replies "invalid argumment"

本文关键字:无效 参数 无效参数 回复 工作 网页 InvokeScript      更新时间:2023-09-26

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

我使用

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

希望我的假设是正确的,这对你来说是可行的