C++ - IWebBrowser2 - Javascript не активирован

Я тестировал код проекта с веб-сайта code project.com ( https://www.code project.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla)

Это часть кода:

long EmbedBrowserObject(HWND hwnd)
{
   IOleObject           *browserObject;
   IWebBrowser2     *webBrowser2;
   RECT             rect;
   char             *ptr;
   IOleInPlaceFrameEx   *iOleInPlaceFrameEx;
   _IOleClientSiteEx    *_iOleClientSiteEx;

   if (!(ptr = (char *)GlobalAlloc(GMEM_FIXED, sizeof(IOleInPlaceFrameEx) + sizeof(_IOleClientSiteEx) + sizeof(IOleObject *))))
      return(-1);

   iOleInPlaceFrameEx = (IOleInPlaceFrameEx *)(ptr + sizeof(IOleObject *));
   iOleInPlaceFrameEx->frame.lpVtbl = &MyIOleInPlaceFrameTable;
   iOleInPlaceFrameEx->window = hwnd;

   _iOleClientSiteEx = (_IOleClientSiteEx *)(ptr + sizeof(IOleInPlaceFrameEx) + sizeof(IOleObject *));
   _iOleClientSiteEx->client.lpVtbl = &MyIOleClientSiteTable;
   _iOleClientSiteEx->inplace.inplace.lpVtbl = &MyIOleInPlaceSiteTable;
   _iOleClientSiteEx->inplace.frame = iOleInPlaceFrameEx;

   if (!OleCreate(&CLSID_WebBrowser, &IID_IOleObject, OLERENDER_DRAW, 0, (IOleClientSite *)_iOleClientSiteEx, &MyIStorage, (void**)&browserObject))
   {

       *((IOleObject **)ptr) = browserObject;
       SetWindowLong(hwnd, GWL_USERDATA, (LONG)ptr);
       browserObject->lpVtbl->SetHostNames(browserObject, L"My Host Name", 0);

       GetClientRect(hwnd, &rect);

       if (!OleSetContainedObject((struct IUnknown *)browserObject, TRUE) && !browserObject->lpVtbl->DoVerb(browserObject, OLEIVERB_SHOW, NULL, (IOleClientSite *)_iOleClientSiteEx, -1, hwnd, &rect) && !browserObject->lpVtbl->QueryInterface(browserObject, &IID_IWebBrowser2, (void**)&webBrowser2))
    {
        webBrowser2->lpVtbl->put_Left(webBrowser2, 0);
        webBrowser2->lpVtbl->put_Top(webBrowser2, 0);
        webBrowser2->lpVtbl->put_Width(webBrowser2, rect.right);
        webBrowser2->lpVtbl->put_Height(webBrowser2, rect.bottom);
        webBrowser2->lpVtbl->Release(webBrowser2);
        return(0);
    }

    UnEmbedBrowserObject(hwnd);
    return(-3);
}

GlobalFree(ptr);
return(-2);
} 

А также:

long DisplayHTMLPage(HWND hwnd, LPTSTR webPageName)
{
    IWebBrowser2    *webBrowser2;
    VARIANT         myURL;
    IOleObject      *browserObject;

    browserObject = *((IOleObject **)GetWindowLong(hwnd, GWL_USERDATA));

    if (!browserObject->lpVtbl->QueryInterface(browserObject, &IID_IWebBrowser2, (void**)&webBrowser2))
    {
        VariantInit(&myURL);
        myURL.vt = VT_BSTR;

        size_t convertedChars = 0;
        wchar_t wcstring[50];
        mbstowcs_s(&convertedChars, wcstring, 50, webPageName, _TRUNCATE);
        myURL.bstrVal = SysAllocString(wcstring);

        if (!myURL.bstrVal)
        {
           badalloc:    webBrowser2->lpVtbl->Release(webBrowser2);
           return(-6);
        }

        webBrowser2->lpVtbl->Navigate2(webBrowser2, &myURL, 0, 0, 0, 0);

        VariantClear(&myURL);

        webBrowser2->lpVtbl->Release(webBrowser2);

        return(0);
    }

    return(-5);
   }

Когда я запускаю их код, у меня не возникает проблем с работой сайта без Javascript. Но теперь, если я открываю сайт с использованием Javascript, я получаю много ошибок на экране.

Сообщение об ошибке на картинке

Второе сообщение об ошибке на картинке

Как я могу решить это?

Спасибо

2 ответа

Я добавил следующую инструкцию в мой HTML:

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

Оно работает.

Убедитесь, что ваш встроенный веб-браузер работает в самой высокой версии IE.

HKEY_CURRENT_USER \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION

https://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

Другие вопросы по тегам