簡體   English   中英

Windows 7上的IHTMLDocument2和Internet Explorer 11更改

[英]IHTMLDocument2 and Internet Explorer 11 changes on Windows 7

我使用TWebBrowser在應用程序中具有HTML編輯器,當然這取決於安裝的Internet Explorer版本。 在Windows 7上安裝了全新的Internet Explorer 11之后,我注意到編輯器已更改。 段落似乎不再具有相同的HTML代碼。

在按下Enter鍵之前生成的HTML:

<P>&nbsp;</P>

現在生成的HTML:

<P><BR></P>

這給我的編輯器增加了另一行,看起來並不正確。 <P>本身有換行, <BR>在這里完全沒用。

有沒有一種方法可以告訴MSHTML / TWebBrowser控件在編輯模式下按下Enter鍵時要使用哪個標記? 例如,我已經看到一些MS程序生成:

<div><font></font></div>

當您按Enter進入新行。

另外(如果有關系的話)-當我使用命令設置字體大小時,是否有一種方法可以控制使用哪個標記(而不是將過時的size = 1改為size = 7以使CSS像“ font-size :10px的“)

歡迎使用Delphi和C ++ Builder中的代碼示例。

使用bcbhtml :首先將html.cpp添加到您的項目中,並包括“ html.h”:

#include "html.h"

在全局范圍內定義文檔變量:

THTMLDocument document;

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    WebBrowser1->Navigate("about:<div contenteditable=true>Type here</div>"); // example editable region
}

void __fastcall TForm1::WebBrowser1DocumentComplete(TObject *ASender, const IDispatch *pDisp,
          const OleVariant &URL)
{
    document.documentFromVariant(WebBrowser1->Document);
    document.onkeydown = &onkeydown;
}

void TForm1::onkeydown()
{
    EventObj event = document.parentWindow.event;
    if(event.keyCode == VK_RETURN)
    {
        document.selection.createRange().pasteHTML("<P>&nbsp;</P>"); // You can put every html you like per every key code
        event.returnValue = false; // blocks default html which will be generated
    }
}

您可以從此處下載這個很棒的包裝器(bcbhtml)。

暫無
暫無

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

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