最近我在做一个小程序,通过一个webbrowser控件浏览某个网页,页面打开后通过鼠标选中页面中某个区域并获取这个区域的页面代码,我通过如下方式得到了代码,但存在一个问题,请先看代码:procedure TForm2.btn2Click (Sender : TObject);
var
  doc2: IHTMLDocument2;
  docselected: IHTMLTxtRange;
  strl: TStringList;
begin
  if not EmbeddedWB1.Busy then
    begin
    strl := TStringList.Create;
    doc2 := EmbeddedWB1.Doc2;
    docselected := doc2.selection.createRange as IHTMLTxtRange;
    JvMemo1.Text:= docselected.htmltext
    end;
end;这样是可以取得选中部分的代码,但取得的代码是经过IE处理的,并不是直接从服务器下载下来的内容,和用IE右键的查看源代码功能看到的是不同的,请问怎样才能获得webbrowser中选中内容的未经处理的源代码呢?

解决方案 »

  1.   

    理論上來看是跟查看源代碼看到的一樣,如果不一樣貼相應的網址來研究研究!
    memo1.Clear;
    memo1.Lines.Text := EmbeddedWB1.SelTextHTML;
      

  2.   

    确实是不同的,这可能主要发生在使用了CSS的页面中,比如下面的用IE的右键查看源代码功能看到的是怎么会不显示<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=图片',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_1">图片</span>而用我说的方法和你说的方法得到的内容是:怎么会不显示<SPAN id=rlt_1 style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid" 
    onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=图片',this.id)">图片</SPAN>这两段内容大致是相同的,意思也是相同的,但我不能用下面的结果,因为我还要在网页代码中找到这段代码的起始位置。
      

  3.   

     
    谢谢您的回答,受教了。
    我的目的主要就是:
       本地有非常多的下载好的html文件(通过下载工具批量下载的),然后做一个程序浏览某个网上的页面时,可以选中某部分内容并在本地html文件中查找是否有包含这段代码的文件,如果有则返回文件名称和代码在html文件中的位置。   我尝试过通过剪贴板临时保存数据:
            docselected.execCommand ('Copy', False, EmptyParam);   但这样得到的也是经过IE处理的。
      

  4.   

    原本是這樣子,這問題可就不小羅!先期待其他高手!有沒有想過乾脆用WEBBROWSER去下載你所要的那些HTML,然後再來執行你要求的這個操作
      

  5.   

    我也想过用Twebbrowser下载的,但当多线程下载的时候对系统要求实在是高啊,期待有高手能够解决。
      

  6.   

    不用ie打开,使用Tstream打开后,搜索关键字