我正在尝试在网络浏览器中调用javascript函数。网站有单独的文件与javascript函数。这是网站html文件的一部分:
<div class="header">
<a class="buttonrg" onclick="$(this).hide();remove('56442741')"> Remove </a>
</div>
这是从.js文件中删除功能:
function remove(id) {
$.ajax({
type: "POST",
url: "ajax/remove.php",
data: "remove=" + id
});
}
我正在尝试在 c# 中使用此脚本调用"删除"函数:
public void RemoveOffer(int _id)
{
try
{
webBrowser.Document.InvokeScript("remove", new object[] { _id.ToString() });
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
但是当我尝试调用此脚本控制台时,总是向我显示错误:指定的强制转换无效。
可能出现什么问题?
将data: "remove=" + remove
更改为data: { "remove": id }
您是否从创建它的线程以外的线程调用InvokeScript()
?这样做导致为我抛出此异常。
鉴于这种情况,这是一个奇怪的错误消息,但是我用Invoke()
解决了这个问题
例如
private void RemoveOffer(int _id)
{
if (webBrowser.InvokeRequired)
{
webBrowser.Invoke(new Action(() => { RemoveOffer(_id); }));
return;
}
webBrowser.Document.InvokeScript("remove", new object[] { _id }); // Not sure if the .ToString() is required...
}