嗨,我们在非兼容模式下使用 IE9。
我们正在做这样的事情来从浏览器端读取 JS 变量值:
ComPtr<IDispatch> disp;
m_spBrowser->get_Document(&disp);
CComQIPtr<IHTMLDocument2> htmlDoc = disp;
if( !htmlDoc ) return ZString();
CComPtr<IHTMLWindow2> spWindow;
htmlDoc->get_parentWindow(&spWindow);
CComVariant varRes;
CComDispatchDriver dispWindow = spWindow;
if( dispWindow ) {
HRESULT hr = dispWindow.GetPropertyByName(L"returnValue", &varRes);
if( SUCCEEDED(hr) && SUCCEEDED(varRes.ChangeType(VT_BSTR)) )
return CString(varRes.bstrVal);
}
return CString();
我们正在使用旧版本的 ATL。
现在这个例程在 IE9 不兼容模式下运行时总是失败。“returnValue”为 Null,我们得到 GetLastError 的 0 值。
有任何想法吗?这是一个已知问题吗?如果有,有什么修复/解决方法吗?