簡體   English   中英

在WebBrowser Control C#中處理自定義Javascript事件

[英]Handling custom Javascript events in WebBrowser Control C#

我正在嘗試處理似乎是自定義js事件的事件。 我有一個通過AJAX請求更新的表,並且包含在iframe的一個框架中。 我必須檢測該表何時填充數據。

當我檢查Firebug中的表時,它顯示了一個稱為溢出的事件正在運行。 但是我在任何地方都找不到任何有關它的東西,因此我認為它是自定義的或不被支持,至少不是我所使用的WebBrowser控件所支持的。

此javascript代碼將檢測到它:

(function(){
    function log( e ) {
        console.log( e );
    }
    window.frames[0].frames[1].document.body.addEventListener( "overflow", log );    
})();

但是,除非絕對必要,否則我想避免使用js進行C#調用,如何使用Web瀏覽器處理C#中的js溢出事件?

2015年6月11日更新:請在下面查看正確的答案

您可以看一下: Web瀏覽器控件:如何捕獲文檔事件?

但這表明使用了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事件,例如單擊,鼠標懸停,鼠標移動等。因此,您的最終方法就是圍繞此限制編寫代碼。

暫無
暫無

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

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