- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 Delphi 中使用标准 TWebbrowser 组件,该组件在内部使用 mshtml.dll。另外,我们使用注册表来确保页面使用新的渲染引擎( Web-Browser-Control-Specifying-the-IE-Version 、 MSDN: FEATURE_BROWSER_EMULATION )进行渲染。因此我们使用 IE 10 的渲染,但使用 ie 8 到 ie 11 得到相同的结果。
使用 MSHTML (IE7) 的标准渲染机可以正常工作,但由于新的渲染选项,我们需要 MSHTML 的新渲染。
我们使用控件的设计模式来使用户能够对文档进行更改:
var
mDocument: IHTMLDocument2;
begin
mDocument := ((ASender as TWebBrowser).Document as IHTMLDocument2);
mDocument.designMode := 'on';
现在我们遇到了以下问题:当我们使用 IHTMLTxtRange.pasteHTML(...) 插入 HTML 代码时,一些空格被替换为
procedure TForm1.BT_PasteHtmlClick(Sender: TObject);
var
mDoc2: IHTMLDocument2;
mOvSel:IHTMLSelectionObject;
mRange: IHTMLTxtRange;
mHtml: string;
begin
/// Reproduzierbarer Fehler bei PasteHtml
/// Leere Zellen und falsche Umbrüche.
mDoc2 := WB_Test.Document as IHTMLDocument2;
mOvSel := mDoc2.selection as IHTMLSelectionObject;
mRange := mOvSel.CreateRange() as IHTMLTxtRange;
mHtml := '<TABLE width="100%" border="1" cellspacing="0" cellpadding="0"> <TBODY> <TR> <TD>Falsche Zellen werden erstellt, wo nur diese eine sein sollte!</TD></TR></TBODY></TABLE>' + sLineBreak +
'<p>Falsche Umbrueche ' + sLineBreak +
'wo keine sein sollten durch CRLF im Html-Code!</p>' + sLineBreak;
mRange.pasteHTML(mHtml);
end;
查看插入的代码,TABLE、TBODY、TR 和 TD 标记之间的空格已转换为 。错误插入的HTML代码是:
<TABLE width="100%" border="1" cellspacing="0" cellpadding="0">
<TBODY>
<TR>
<TD>Falsche Zellen werden erstellt, wo nur diese eine sein
sollte!</TD></TR></TBODY></TABLE><BR>
<P>Falsche Umbrueche <BR>wo keine sein sollten durch CRLF im
Html-Code!</P>
编辑:我们从以下 HTML 开始:
<html>
<body>
</body>
</html>
插入后得到:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META name="GENERATOR" content="MSHTML 10.00.9200.16540"></HEAD>
<BODY>
<TABLE border="1" cellspacing="0" cellpadding="0">
<TBODY>
<TR>
<TD>Tabelle mit<BR>einem Text!</TD></TR></TBODY></TABLE><BR>
<P>Falsche Umbrüche durch zu viele Leerzeichen</P></BODY></HTML>
最佳答案
这可能是设计使然。符合HTML specifications ,HTML 代码中的任何空格都应被视为单个空格实例(<pre>
标签内除外)。为了在设计模式下键入两个或多个空格时提供额外的单词分隔,IE 会插入
相反,HTML 实体。
关于delphi - MSHTML PasteHTML() 产生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018242/
我正在为驻留在旧 CMS 中的旧 IE 专用所见即所得编辑器编写插件。我创建了一个插件,可以打开一个弹出窗口,用户可以在其中输入 YouTube 剪辑的网址。 弹出窗口然后为嵌入创建正确的 标记并使用
我们在 Delphi 中使用标准 TWebbrowser 组件,该组件在内部使用 mshtml.dll。另外,我们使用注册表来确保页面使用新的渲染引擎( Web-Browser-Control-Spe
我正在使用 Microsoft 的 mshtml 编写一个简单的 HTML 所见即所得编辑器。其中一个功能应该是为所选文本选择标题类型(例如 h1、h2、h3)。第一次赋值是没有问题的,代码如下: /
我制作了一个 jQuery 幻灯片,将其插入我的网站(Jimdo 平台)的唯一方法是通过 iframe。问题是,如果我从 pastehtml.com 中使用 iframe 它,我会在我的 jQuery
这个问题已经有答案了: Insert html at caret in a contenteditable div (4 个回答) 已关闭10 年前。 我试图让 IE 粘贴到 contentedita
我在 Internet Explorer 中使用 pasteHTML 方法替换所选文本(将 HTML 文本粘贴到给定的文本范围内,替换该范围内的任何先前文本和 HTML 元素。) var ran =
我正在使用可编辑的 iframe 创建自定义的 WYSIWYG。我想添加自定义 html 标签 到选定的文本,如 一些内容在这里 .我用过这段代码 Editor = document.getEleme
我有以下带有 Javascript 代码的 HTML(注意:这只适用于 Internet Explorer): function changeIt() { var startTag = "";
我试图让用户编辑一个内容可编辑的 div,但我发现除非选择了一些文本,否则我无法使用 pasteHTML。 我以为 document.selection.createRange() 会返回一个有效的零
我是一名优秀的程序员,十分优秀!