2009-08-28 27 views
1

我在我的應用程序中嵌入了nsIWebBrowser。因爲我只是爲它動態生成HTML,所以我使用OpenStream,AppendToStream和CloseStream來添加內容。我需要的是通過Web瀏覽器添加鼠標移動的事件監聽器以及鼠標點擊。我閱讀過文檔並嘗試了很多不同的東西,但是我沒有嘗試過的東西已經起作用了。例如,下面的代碼似乎做正確的事,但不起任何作用:如何將鼠標事件偵聽器附加到C++中的嵌入式nsIWebBrowser中

nsCOMPtr<nsIDOMWindow> domWindow; 
    mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); 

    if (!mEventTarget) { 
    mEventTarget = do_QueryInterface(domWindow); 

    if (mEventTarget) 
     mEventTarget->AddEventListener(NS_LITERAL_STRING("mouseover"), (nsIDOMEventListener *)mEventListener, PR_FALSE); 
} 

也許是因爲這是在初始化過程中運行它不工作,但任何內容之前實際上被添加。但是,如果我在AppendStream或CloseStream中添加它,它會出現段錯誤。

請告訴我一個簡單的方法來做到這一點。

回答

2

嗯,這裏的答案:

nsCOMPtr<nsIDOMEventTarget> cpEventTarget; 
nsCOMPtr<nsIDOMWindow> cpDomWin; 
m_pWebBrowser->GetContentDOMWindow (getter_AddRefs(cpDomWin)); 
nsCOMPtr<nsIDOMWindow2> cpDomWin2 (do_QueryInterface (cpDomWin)); 
cpDomWin2->GetWindowRoot(getter_AddRefs(cpEventTarget)); 

rv = cpEventTarget->AddEventListener(NS_LITERAL_STRING("mousedown"), 
       m_pBrowserImpl, PR_FALSE); 
+0

你必須與代碼中的一些格式問題;) – sdwilsh 2009-08-28 21:26:12

+0

它還會很高興地看到輪廓爲你的'nsIDOMEventListener'事件監聽器實現,它是如何產生。 – 2011-01-28 20:51:28

相關問題