1

onloadイベントをリッスンするBHOがあります。以下は、BeforeNavigate2の各イベントで実行される(簡略化された)コードです。

CComQIPtr<IWebBrowser2> pBrowser(pDisp);

CComPtr<IDispatch> pUnk = NULL;
HRESULT hr = pBrowser->get_Document(&pUnk);

CComQIPtr<IHTMLDocument2> pHtmlDoc2(pUnk);

CComQIPtr<IHTMLWindow2> pWindow2;
pHtmlDoc2->get_parentWindow((IHTMLWindow2**) &pWindow2);

CComQIPtr<IHTMLWindow3> pWindow3(pWindow2);

VARIANT_BOOL result = VARIANT_TRUE;
CComBSTR onEvent(TEXT("onload"));
pDomEvent = new Page::DOMLoaded();

pWindow3->attachEvent(onEvent, pDomEvent, &result);

(簡略化するためにすべてのチェックを削除しました)

onloadイベントは最初のページでトリガーされますが、その後にアクセスしたページではトリガーされません。何が欠けているのか、間違っているのかがわかりませんでした。

4

1 に答える 1

1

これを行うには、BeforeNavigate はおそらく時期尚早です。2 回目以降の呼び出しでは、古いウィンドウで作業していると思われます。代わりに NavigateComplete2 を試してください。

于 2012-10-20T10:38:50.423 に答える