Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выскакивающие окна iexplorera


Opilki_Inside ©   (2005-04-07 15:32:00) 

Иногда при загрузке страницы почему-то появляется окно интернет эксплорера о том что страницу невозможно загрузить... причем событие OnNewWindow обрабатываю нормально... такая ситуация происходит не всегда...


Opilki_Inside   (2005-04-08 10:52:00) [1]

var
 URL: WideString;

begin
...
  url := ' http://yandex.ru/';    

   WB.Silent := true;
   WB.OnDocumentComplete:=WB1DocumentComplete;
   WB.OnNewWindow2:=WB1NewWindow2;
   WB.OnBeforeNavigate2 := EmbeddedWB1BeforeNavigate2;

   WB.Width := Width;
   WB.Height := Height;
   WB.Visible := true;
   WB.ParentWindow := Handle;
   currentFrame := nil;

   wb.Navigate(URL);

   FURL := url;

   repeat
     Application.HandleMessage;
   until (loadCompleted) or (GetTickCount-beginTime > dm.loadPageTimeOut) or (not TimeOut.Enabled);

   wb.Stop;
...
end;

...

procedure TfGetLinks.wb1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
 var Cancel: WordBool);
var
 url: wideString;
begin
 //флешка
 if (wf <> nil) and (lockPopupWindow) then
 begin
   addlog('Новое окное для флешки');
   ppDisp := wf.FWB.Application;
 end else
 //pop up window!
 begin
     ppDisp := WBpopUp.Application;
     addlog('Обнаружено POPUP окно: '+TWebBrowser(Sender).LocationURL);
 end;
end;


т.е. в любом случае я передаю всплывающие окно одному из браузеров. почему может происходить "вылет" этой страницы в iexplorer?

procedure TfGetLinks.wb1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
var
 curWebBrowser, topWebBrowser: IWebBrowser2;
 w, h, i, j: Integer;
 fName: string;
begin

 curWebBrowser := pDisp as IWebBrowser2;
 topWebBrowser := (Sender as TWebBrowser).DefaultInterface;

 if curWebBrowser = topWebBrowser then
 begin
   //Документ полностью загружен!
   //начинаем анализировать

   loadCompleted := true;
   if not isFrameScan then
     localURL := TEmbeddedWB( sender).LocationURL;

   TEmbeddedWB(sender).Stop;

   addLog('Загрузка страницы '+url+' завершина');

     w := trunc(TEmbeddedWB(sender).OleObject.Document.Body.ScrollWidth);
     h := trunc(TEmbeddedWB(sender).OleObject.Document.Body.ScrollHeight*1.04);
     TEmbeddedWB(sender).Height := h;
     TEmbeddedWB(sender).Width := w;

   try
     ScanAllLinks(WB.DefaultInterface, pDisp);

     finishScan := true;

     isFrameScan := true;
     for i := 1 to wb.FrameCount-1 do
     begin
       currentFrame := nil;
       for j := 0 to linkList.GetFrameObjectCount-1 do
       begin
         if (linkList.GetFrameObject(j).src = TEmbeddedWB(sender).GetFrame(i).LocationURL) then
         begin
           currentFrame := linkList.GetFrameObject(j);
           if (TEmbeddedWB(sender).GetFrame(i).Application <> nil) then
           begin
             addlog('Анализируем фрейм: "'+currentFrame.src+'"');
             ScanAllLinks(TEmbeddedWB(sender).GetFrame(i), TEmbeddedWB(sender).GetFrame(i).Application);;
           end;
         end;
       end;
     end;

     isFrameScan := false;

   except
     on e: exception do
       addLog('Ошибка при анализе фрейма: '+e.Message,2);
   end;

   FinishScan := true;

 end;
end;


procedure TfGetLinks.EmbeddedWB1BeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
begin
 if loadCompleted then
 begin
   if (wf <> nil) and (lockPopupWindow) then
   begin
     wf.FWB.Navigate(URL);
   end;
   Cancel := true;
 end;
end;


Rouse_   (2005-04-07 22:41:00) [2]

Код в студию (Navigate и обработчики событий браузера)


Наверх

Титульная страница Поиск, карта сайта Написать письмо