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 对象作为参数
希望我的假设是正确的,这对你有用
我的脚本函数已经在当前加载的文档中定义
我正在使用
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 对象作为参数
希望我的假设是正确的,这对你有用