![](/img/trans.png)
[英]How to get IHTMLDocument2 ->get_body ->get_innerHTML into a lowercase string?
[英]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.