簡體   English   中英

Web 瀏覽器控件:如何捕獲文檔事件?

[英]Web browser control: How to capture document events?

我正在使用 WPF 的 WebBrowser 控件加載一個簡單的網頁。 在此頁面上,我有一個錨點或按鈕。 我想在我的應用程序后面的代碼中(即在 C# 中)捕獲該按鈕的點擊事件。

WebBrowser 控件有沒有辦法捕獲已加載頁面元素上的單擊事件?

此外,是否可以在頁面和 WebBrowser 之間傳遞事件觸發的數據? 以上所有應該都是可能的,對嗎?

  • 編輯:可能的解決方案:

我發現以下鏈接可能是一個解決方案。 我還沒有測試過,但值得一試。 將根據我的測試結果更新此問題。

http://support.microsoft.com/kb/312777

好的答案找到了 - 經過測試並且有效:

  • 從 COM 選項卡添加一個名為: Microsoft HTML 對象庫的引用

下面是一個示例代碼:

您將需要兩個組件:WebBrowser (webBrowser1) 和一個 TextBox (textBox1)

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        webBrowser1.LoadCompleted += new LoadCompletedEventHandler(webBrowser1_LoadCompleted);
    }

    private void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e)
    {
        mshtml.HTMLDocument doc;
        doc = (mshtml.HTMLDocument)webBrowser1.Document;
        mshtml.HTMLDocumentEvents2_Event iEvent;
        iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
        iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
    }

    private bool ClickEventHandler(mshtml.IHTMLEventObj e)
    {
        textBox1.Text = "Item Clicked";
        return true;
    }
}

這是另一個例子。

我試圖注入一個遠程 javascript 文件並在准備好時通過將 DOM 元素<script src="{path to remote file}" />到標頭來執行一些代碼,本質上與jQuery.getScript(url, callback ) ..

下面的代碼工作正常。

HtmlElementCollection head = browser.Document.GetElementsByTagName("head");
if (head != null)
{
    HtmlElement scriptEl = browser.Document.CreateElement("script");
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
    element.src = url;
    element.type = "text/javascript";
    head[0].AppendChild(scriptEl);
    // Listen for readyState changes
    ((mshtml.HTMLScriptEvents2_Event)element).onreadystatechange += delegate
    {
        if (element.readyState == "complete" || element.readyState == "loaded")
        {
            Callback.execute(callbackId);
        }
    };
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM