![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выскакивающие окна 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 и обработчики событий браузера)