开发工具VS2008        CComPtr<IDispatch>  pDocDisp;  
        CComQIPtr<IHTMLDocument2> pHtmlDoc2;         pDocDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pHtmlDoc2);
IHTMLWindow2* pWindow;   HRESULT hr = pHtmlDoc2->get_parentWindow(&pWindow);        LPOLESTR bstrMember = L"ashow";
        DISPID dispid ;        HRESULT hrr = pWindow->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT, &dispid);
页面js函数<script type="text/javascript">
    function ashow()
    {
        alert('312331');
    }
    
</script>
dispid返回的结果是-1,表示没有找到js中的这个函数
望大侠们看下这个是什么问题。为什么找不到这个js函数

解决方案 »

  1.   

    可能你的C++代码执行的时候,ashow函数定义代码还没执行呢
      

  2.   


    LRESULT XXX::CallJavaScript( LPCWSTR lpJavaScriptCode )
    {
    if (!m_pDoc)
    return E_FAIL;
    CComPtr<IHTMLWindow2> pWindow;
    if (FAILED(m_pDoc->get_parentWindow(&pWindow)))
    {
    return E_FAIL;
    } CComVariant bvResult;
    static CComBSTR javascript = L"javascript"; CString strSafeJsCode;
    strSafeJsCode.Format(L"try{ %s } catch(e){ }", lpJavaScriptCode);
    CComBSTR bstrSaveJsCode(strSafeJsCode);
    HRESULT hr = pWindow->execScript(bstrSaveJsCode, javascript, &bvResult);
    return hr;
    }
      

  3.   

    http://hi.baidu.com/adoblog/blog/item/fef7b41750dda60fc83d6d3f.html
      

  4.   

    http://download.csdn.net/source/3409877