線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1872
推到 Plurk!
推到 Facebook!

透過 WebBrowser 取得網頁當中的 FrameSet 資料

尚未結案
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-30 18:12:24 IP:61.216.xxx.xxx 未訂閱
我透過 TWebBrowser 瀏覽網頁時, 可以使用以下的一段程式取得網頁中的所有 Frame 資料:
procedure TForm1.Button1Click(Sender: TObject);
begin
   NavigateFrameset((WebBrowser1.Document as IHTMLDocument2));
end;    procedure TForm1.NavigateFrameset(document: IHTMLDocument2);
var
    index: Integer;
    ole_index: OleVariant;
    frame_dispatch: IDispatch;
    framed: IHTMLWindow2;
begin
   if document = nil then exit;
   try
      Memo1.Lines.Add('URL : ' String(document.URL));
      for index := 1 to document.Frames.Length do begin
         try
             ole_index := index-1;
             frame_dispatch := document.Frames.Item(ole_index);
             if frame_dispatch <> nil then begin
                 framed := frame_dispatch as IHTMLWindow2;
                 if Assigned(framed.document) then NavigateFrameset(framed.document);
             end;
         except
             on E: Exception do MessageDlg(E.Message,mtError,[mbOk],0);
         end;
      end;
   except
       on E: Exception do MessageDlg(E.Message,mtError,[mbOk],0);
   end;
end;
這段程式碼對絕大多數網頁都可以正常執行, 可是在少數網頁中, 卻會發生錯誤 例如: http://www.imfong.com 就無法使用 請大家幫忙測試一下, 問題出在哪邊好嗎 ? 謝謝 ! (必須 uses MSHTML_TLB 才能編譯以上程式碼, 而 MSHTML_TLB 必須經由 import Type Library 取得)
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-30 20:01:04 IP:61.31.xxx.xxx 未訂閱
這個問題應該是無解了! 原因在於: 最初,瀏覽器的開發商、開發團體出於安全性的考慮,默認情況下是不允許在分屬於不同域的頁面之間進行數據交換和方法調用的,當遇到這種情況時瀏覽器就會返回「拒絕訪問(Access Denied)」的錯誤。 也就是說該網頁的Frames 各別為不同領域的IP 位置。 基於安全性的考量,因此就...... 可以看一下這篇報導。 http://www.cryer.co.uk/brian/delphi/error_twb_eoleexception.htm
系統時間:2024-05-17 14:15:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!