1

我在我的应用程序中嵌入了一个 nsIWebBrowser。因为我只是动态地为其生成 HTML,所以我使用 OpenStream、AppendToStream 和 CloseStream 来添加内容。我需要的是添加事件侦听器以在 Web 浏览器上移动鼠标以及单击鼠标。我已经阅读了文档并尝试了很多不同的东西,但我尝试过的都没有奏效。例如,下面的代码似乎做了正确的事情,但它什么也没做:

    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 期间添加它,则会出现段错误。

请告诉我一个简单的方法来做到这一点。

4

1 回答 1

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); 
于 2009-08-28T12:34:01.163 回答