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中に追加すると、segfaultが発生します。

これを行う簡単な方法を教えてください。

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 に答える