我在我的应用程序中嵌入了一个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中添加它,则会发生段错误。
请告诉我一个直截了当的方法。
答案 0 :(得分: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);