我想通过C#在HTML中执行一个函数,但出现错误。
由于网络浏览器中有地图,所以我不能忽略“导航”功能。
javascript
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0,user-scalable=no">
<script>
function CallScrript(va1, va2)
{
alert('Val1 : ' + val1 + ' / Val2 : ' + val2);
}
</script>
</head>
<body>
</body>
</html>
C#代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.webBrowser1.Navigate("http://1xx.xxx.xxx.xxx/test.html");
ExecJavascript("abc", "bcd");
}
private void ExecJavascript(string sValue1, string sValue2)
{
try
{
webBrowser1.Document.InvokeScript("CallScript", new object[] { sValue1, sValue2 });
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
}
错误消息:system.nullreferenceexception对象引用未设置为对象的实例。
您将收到NullReference异常,因为调用方法时Document
属性尚不存在。
您可能需要一个在文档加载完成事件上的委托才能启动您将要执行的操作。。
this.webBrowser1.NavigationCompleted += webView1_NavigationCompleted;
private void webView1_NavigationCompleted(WebView sender, WebViewControlNavigationCompletedEventArgs args)
{
if (args.IsSuccess == true)
{
statusTextBlock.Text = "Navigation to " + args.Uri.ToString() + " completed successfully.";
}
else
{
statusTextBlock.Text = "Navigation to: " + args.Uri.ToString() +
" failed with error " + args.WebErrorStatus.ToString();
}
}
您可以在MSDN here上了解有关不同事件的更多信息。