uses 
  ActiveX; procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string); 
var 
  sl: TStringList; 
  ms: TMemoryStream; 
begin 
  WebBrowser.Navigate('about:blank'); 
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do 
   Application.ProcessMessages;   if Assigned(WebBrowser.Document) then 
  begin 
    sl := TStringList.Create; 
    try 
      ms := TMemoryStream.Create; 
      try 
        sl.Text := HTMLCode; 
        sl.SaveToStream(ms); 
        ms.Seek(0, 0); 
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)); 
      finally 
        ms.Free; 
      end; 
    finally 
      sl.Free; 
    end; 
  end; 
end;
使用以上代码在大多数WINDOWS系统(中文及英文等)都能正常显示HTML页面内容,但在少部分系统中会直接显示HTML文件源代码,即通过流写入到WebBrowser的内容,没有正确解释为网页,而直接显示出来。我希望能知道这是怎么造成的,有什么解决办法。之前曾问过这个问题,大家可以看看
http://community.csdn.net/Expert/topic/3068/3068911.xml?temp=.2598535
重点是,谁知道原因。

解决方案 »

  1.   

    IE不能正确检测使用流载入的内容的类型。特别在内容包含大量文本和少量HTML标记的时候。解决的方法是把内容保存为相应扩展名的文件之后浏览
      

  2.   

    编写一个本地Internet信息服务器,浏览本地网站
      

  3.   

    哈,不是吧,一个小小的软件,使用了WEBBROWSER阅读一些HTML格式的内容,要那么复杂就完了……
    另外,要考虑安全性,不能让人截取HTML资料内容。界面的处理已经作好,但不知道如果使用临时文件浏览HTML内容,如何防止这个临时文件被窃取
      

  4.   

    请大家帮助。
    使用WebBrowser.OleObject.document.body.innerHTML输入HTML内容可以解决正常显示的问题。
    但是WebBrowser.OleObject.document.body.innerHTML只包含了<body></body>标记之间的内容。
    请问如何将<head></head>之间的内容也通过这种方式写入webbrowser?
    如果html内容包含script脚本,又该如何做呢?