Delphi XE2:向TWebbrowser文档添加HTML注释?

Delphi XE2:向TWebbrowser文档添加HTML注释?,delphi,delphi-xe2,twebbrowser,html,Delphi,Delphi Xe2,Twebbrowser,Html,我使用此例程将HTML添加到TWebbrowser文档: procedure WBAppendHTML(WB: SHDocVw.TWebbrowser; const HTML: string); (*Appends the given HTML to the end of the given web browser control's current document body. Does nothing if no document is loaded, if the document doe

我使用此例程将HTML添加到TWebbrowser文档:

procedure WBAppendHTML(WB: SHDocVw.TWebbrowser; const HTML: string);
(*Appends the given HTML to the end of the given web browser control's current document body.
Does nothing if no document is loaded, if the document does not support the DOM, or if the document is a frameset.*)
var
  Doc: MSHTML.IHTMLDocument2;
  BodyElem: MSHTML.IHTMLBodyElement;
  Range: MSHTML.IHTMLTxtRange;
begin
  if not System.SysUtils.Supports(WB.Document, MSHTML.IHTMLDocument2, Doc) then
    EXIT;
  if not System.SysUtils.Supports(Doc.body, MSHTML.IHTMLBodyElement, BodyElem) then
    EXIT;
  Range := BodyElem.createTextRange;
  Range.collapse(False);
  Range.pasteHTML(HTML);
end;
如果HTML是这样的:“我的文本”:

之后,我从剪贴板内容的CF_HTML部分检索HTML源:

function GetClipboardAsHTMLSource: string;
var
  Data: THandle;
  Ptr: PAnsiChar; // PChar;
begin
  Result := '';  
  Clipboard.Open;
  try
    Data := Clipboard.GetAsHandle(CF_HTML);
    if Data <> 0 then
    begin
      Ptr := PAnsiChar(GlobalLock(Data));
      if Ptr <> nil then
      begin
        try
          Result := UTF8Decode(Ptr);
        finally
          GlobalUnlock(Data);
        end;
      end;
    end;
  finally
    Clipboard.Close;
  end;  
end;
函数GetClipboardAsHTMLSource:string; 变量 资料来源:坦德尔; Ptr:PAnsiChar;//PChar; 开始 结果:=''; 剪贴板。打开; 尝试 数据:=Clipboard.GetAsHandle(CF_HTML); 如果数据为0,则 开始 Ptr:=PAnsiChar(GlobalLock(数据)); 如果Ptr为零,则 开始 尝试 结果:=UTF8解码(Ptr); 最后 GlobalUnlock(数据); 结束; 结束; 结束; 最后 剪贴板。关闭; 结束; 结束;
你怎么知道它不起作用?好问题;-)将HTML添加到TWebbrowser文档后,我将执行剪贴板复制:
wb.ExecWB(OLECMDID\u SELECTALL,OLECMDEXECOPT\u DODEFAULT);wb.ExecWB(OLECMDID_副本,OLECMDEXECOPT_DODEFAULT);wb.ExecWB(OLECMDID_ClearElection,OLECMDEXECOPT_DontComputer)然后我提取剪贴板的CF_HTML部分。正如我所说,这适用于普通的HTML代码,但不适用于HTML注释。剪贴板复制是否会导出HTML注释?我的意思是,如果评论出现在最初的HTML中,你会看到它们吗?(可能选择All©只将文档的可见部分写入剪贴板。)是的。我刚刚创建了一个包含以下正文内容的HTML文件:
这是一个测试这是测试2
。在MSIE中打开后,我选择了“这是测试,这是测试2”,Ctr-C将选择复制到剪贴板。然后,剪贴板内容中提取的CF_HTML部分包含了“”注释。很抱歉,我在这里迷路了。也许PasteHTML只是不识别HTML注释。我会尝试设置范围的
htmlText
属性,也许它会跳过一些额外的解析。
WBAppendHTML(wb, '<!-- {93706302-FC6C-43D6-8362-DE71550AD998} -->');
// select the entire document:
wb.ExecWB(OLECMDID_SELECTALL,      OLECMDEXECOPT_DODEFAULT);
// copy the text to Clipboard:
wb.ExecWB(OLECMDID_COPY,           OLECMDEXECOPT_DODEFAULT);
// clear the selection:
wb.ExecWB(OLECMDID_CLEARSELECTION, OLECMDEXECOPT_DONTPROMPTUSER);
function GetClipboardAsHTMLSource: string;
var
  Data: THandle;
  Ptr: PAnsiChar; // PChar;
begin
  Result := '';  
  Clipboard.Open;
  try
    Data := Clipboard.GetAsHandle(CF_HTML);
    if Data <> 0 then
    begin
      Ptr := PAnsiChar(GlobalLock(Data));
      if Ptr <> nil then
      begin
        try
          Result := UTF8Decode(Ptr);
        finally
          GlobalUnlock(Data);
        end;
      end;
    end;
  finally
    Clipboard.Close;
  end;  
end;