- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带有 unicode 符号的 html 标记:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns:o = "urn:schemas-microsoft-com:office:office"><HEAD>
<META content="text/html; charset=windows-1251" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 9.00.8112.16441"></HEAD>
<BODY>
<P>ψ</P></BODY></HTML>
符号ψ
我使用 IHTMLTxtRange.pasteHTML 插入。当我使用 HTMLDocument2.body.innerHTML 时,我想得到 <P>ψ</P>
,但不是 Unicode 字符串函数返回 Unicode BSTR 的字符串表示形式哪里ψ
(ψ) 是一个 Unicode 字符 $03C8
最佳答案
另一种解决方法
function GetInnerHTMLFromBody(const ADocument: IHTMLDOCUMENT2): AnsiString;
var
ms: TMemoryStream;
startBody: integer;
stopBody: integer;
const
bodyTag = '<BODY>';
closedBodyTag = '</BODY>';
begin
Result := '';
if ADocument <> nil then
begin
ms := TMemoryStream.Create;
try
Succeeded((ADocument as IPersistStreamInit).Save(
TStreamAdapter.Create(ms, soReference) as IStream, true));
ms.Seek(0, soFromBeginning);
SetLength(Result, ms.size);
ms.ReadBuffer(Result[1], ms.size);
// better to use regexpr
startBody := AnsiPos(bodyTag, Result) + Length(bodyTag);
stopBody := AnsiPos(closedBodyTag, Result);
Result := Copy(Result, startBody, stopBody - startBody);
finally
ms.Free;
end;
end;
end;
但是,此方法仅适用于 ANSI 编码的 html 文档。如果 Unicode 编码您需要进行从 Unicode 到 AnsiString 的额外转换:
if SameText(Utf8ToAnsi(UTF8Encode(HTMLDocument2.charset)),'unicode') then
...
关于delphi - 获取 IHTMLElement.body.innerHTML 作为 ansi 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10025435/
我在 mshtml.IHTMLElement 对象中有一个 DOM 元素(引用 here)。我想通过转到该元素的父元素然后转到该元素的下一个兄弟元素然后获取该元素的第二个子元素来获取“可导航到”的 D
我已经向 IHTMLElement 实例添加了回调,但是当为事件调用 IDispatch::Invoke 时,永远不会有任何参数(即 pDispParams->cArgs 和 pDispParams-
是否可以从 IHTMLElement 中获取窗口句柄?如果是这样,有人可以告诉我如何用 C++ 实现吗? TIA 最佳答案 如果满足以下三点,这可能是可能的: 1) 您有一个使用 C++/C# 启动的
伙计们:我在对象帕斯卡编程中遇到了一个关于“如何获取由多个 IHTMLElements 组成的 IHTMLElementCollection obj”的问题,我的代码如下: function TExD
我使用下面的代码: const HTML_DOC = '' + 'test' + ''; procedure TForm1.Button1Click(Sender: TOb
我有带有 unicode 符号的 html 标记: ψ 符号ψ我使用 IHTMLTxtRange.pasteHTML 插入。当我使用 HTMLDocument2.body
我有一个指向 IE9 中的图像的有效 IHTMLElement 对象。图像数据最近通过 IDirectDrawSurface 更新。我试图找到一种方法来强制 IE9 在更新图像数据后重新绘制 DOM
我有一个由 FireBreath 框架 (http://firebreath.org) 生成的 ActiveX 控件。我需要在托管 C++ 插件的页面中获取对 标记的引用。 如果我使用 NPAPI,我
在TWebBrowser应用程序中,我想使用Delphi 2006(!)获取指向包含此元素的元素的指针(!) Åpne veibeskrivelse i Google Maps 我发现
基本上,根据以下版本控制规则,IHTMLElement5 和 IHTMLElement6 都是主要 IHTMLElement 的扩展接口(interface): IHTMLElement IE4
我是一名优秀的程序员,十分优秀!