簡體   English   中英

IHTMLDocument2 :: get_body在IE 11的CHtmlView中失敗

[英]IHTMLDocument2::get_body fails in CHtmlView for IE 11

我們遇到了一個簡單但關鍵的問題:IHTMLDocument2 :: get_body在IE7(而不是IE11)的嵌入式瀏覽器(CHtmlView)中工作。 我們確實很想開始使用較新的版本,但這是目前的殺手er。

我們使用Visual Studio2010。本機(非托管)C ++。 在32位和64位版本中都會出現問題。 我不知道從哪里開始失敗(IE8?IE9?IE10?)。 在嘗試調用此函數之前,已觸發OnNavigateComplete2。

這是我們的代碼,已經為我們工作了很長時間:

ComPtr<IHTMLTxtRange> CHighlightHTML::GetRange(ComPtr<IHTMLDocument2> document)
{
    ComPtr<IHTMLElement> elt;
    ComPtr<IHTMLBodyElement> body;

    if( SUCCEEDED(document->get_body(&elt.ReleaseGetValue())) )
        body = elt;

    if( body.IsValid() )
    {
        // Create a range from the entire body element.
        ComPtr<IHTMLTxtRange> range;
        CHECK_COM(body, createTextRange(&range.ReleaseGetValue()));
        return range;               
    }
}

但是,當我們設置注冊表項時:HKCU /軟件/ Microsoft / Internet Explorer / Main / FeatureControl / FEATURE_BROWSER_EMULATION

的.exe設置為11000,然后elt == NULL(因此body.IsValid()測試失敗)

如果我們尚未設置注冊表項,或者未將注冊表項設置為7000(因此瀏覽器控件為IE7),則它將再次起作用。

救命!

Robert Aldwinckle在msdn論壇上給了我答案。 我需要將注冊表值設置為11001,而不是11000:

11001 (0x2AF9   Internet Explorer 11. Webpages are displayed in IE11 edge mode, regardless of the !DOCTYPE directive.
11000 (0x2AF8)  IE11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode. Default value for IE11.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM