更新俊/ 11/2015:請查看以下
正確答案你可以看看這個:Web browser control: How to capture document events?
但是,演示了使用COM加載項。但是,從.net 4.5開始,這可以簡單地完成。
說這是一個小的html頁面:
<html>
<head>
<script src="http://code.jquery.com/jquery.js"></script>
<script>
$(function() {
$('input').click(function(){
alert("hello");
$(document).trigger("foo");
});
});
</script>
</head>
<body>
<input type="button" value="Trigger"/>
</body>
</html>
本頁面將觸發該文件自定義事件。我正在使用python web服務器@ localhost:4542託管此頁面。 (這裏沒有顯示)。您必須等待加載html文檔,然後發佈,附加事件處理程序。
using System;
using System.Windows.Forms;
namespace winformWebBrowser
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://localhost:4542");
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.AttachEventHandler("foo", new EventHandler(delegate(object s, EventArgs k)
{
MessageBox.Show("foo");
}));
}
}
}
但是,如果你想自定義數據暴露在事件...?到目前爲止,我對這部分沒有答案......但你可以設計出許多方法來實現這一目標。就像例如,將所有必要的數據放在html文檔某處的隱藏字段中......並且從c#代碼中查詢出這些數據。
更新2015年6月11日:我記得代碼工作第一我試過了。但是,在隨後的測試中,它每次都會失敗。看起來你只能處理純粹的DOM事件 - 比如點擊,鼠標懸停,鼠標移動等等。因此,你最終的方法是圍繞這個限制編寫代碼。
當你說「發生溢流事件」時,你究竟是什麼意思? –
我的意思是說,處理事件(編輯我的問題)。所以我需要點擊表格中的鏈接。 –
我仍然不確定你的意思,'日誌'功能不處理事件? –