Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибки WebBrowser, как убрать выскакивающие окна 
:(
    Опции темы
Teran
  Дата 26.9.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Иногда когда я загружаю страницу в TWebBrowser

выскакивает окно:

Internet Explorer Script Error
.....
Do you want to continue  running scripts on this page?
      Yes  No                              

Как можно сделать чтоб при ошибках скриптов - это окно не покзывалась ????


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Teran
Дата 26.9.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



но когда эту же страницу(файл) загружаю грузиш IE - она грузится и никакие ошибки не выскакивают


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
December
Дата 26.9.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Таково поведение ком-объекта: даже если ты отключил в осле показ ошибок скрипта, он все равно их показывает.
1) Данная функциональность реализована в TEmbeddedWB
2) Если у тебя задача оооочень специфическая (ты чётко знаешь, какие страницы будут грузиться), то самое дешёвое решение - поставить Silent:=true. Но вообще так делать нельзя, потому что нарушается функциональность во многих других областях.
3) Можно перехватывать создание новых модальных окон и анализировать их... Это самый долгий трудный, но и самый универсальный способ... Так как JS Error - не единственное окно, из-за которого хочется скомкать и выбросить TWebBrowser.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Sergey912
Дата 19.1.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



December, 
А можно поподробнее про третий способ, а то мне как раз окна нужны и только это не надо  smile Проблема в том, что у меня некоторые страницы из-за этого отказываются работать совсем  smile 
На каком уровне перехватывать окна? В самом браузере или на уровне приложения как-то нужно? И как это собственно реализовать на практике?

Это сообщение отредактировал(а) Sergey912 - 19.1.2007, 10:33
PM MAIL WWW   Вверх
December
Дата 19.1.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Sergey912, смотри исходники TEmbeddedWB.
Когда я смотрел, было очень криво написано, но в 90% случаев работало.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
TrillerMan
Дата 21.1.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



А как в исходниках оно самое искать? какие функции з аэто отвечают за перехват этих окон и за глушение их?

А если у меня браузер visible:=false это окно всё ранво всплывёт или не будет появляться?
PM MAIL   Вверх
December
Дата 21.1.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



procedure TEmbeddedWB.FormWndProc(var AMsg: Messages.TMessage);

Добавлено @ 14:58 
Это глушение (посылается WM_CLOSE окну)
Цитата(TrillerMan @  21.1.2007,  11:52 Найти цитируемый пост)
браузер visible:=false это окно всё ранво всплывёт или не будет появляться

все равно появится


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
TrillerMan
Дата 21.1.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



Ок спасибо большое,это только одна процедура? она уже за перехват всех функций отвечает ? буду рыть сорцы smile 
PM MAIL   Вверх
Sergey912
Дата 28.1.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



December, 
Нашел процедуру, только непойму как это самому сделать?
PM MAIL WWW   Вверх
December
Дата 28.1.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



лови...
Код

procedure TMainForm.TrapWM_Activate(var Msg: TWMActivate);
var
  L:Integer;
  wnd:Integer;
  WinClass,WinCaption:string;
  ShouldShow:boolean;
  ShouldClose:boolean;
begin
if Msg.Active = 0 then
  begin
  wnd := Msg.ActiveWindow;
  SetLength(WinClass,80);
  SetLength(WinClass,GetClassName(wnd, PChar(WinClass), Length(WinClass)));
  L:=GetWindowTextLength(wnd);
  SetLength(WinCaption,L+1);
  GetWindowText(Wnd,PChar(WinCaption),L+1);
  SetLength(WinCaption,L);
  ShouldShow:=(WinCaption<>'');
  if ShouldShow then
    begin
    ShouldClose:=(WinCaption='Îøèáêà ñöåíàðèÿ Internet Explorer') and (WinClass='Internet Explorer_TridentDlgFrame');
    ShouldClose:=ShouldClose or ((WinCaption='Internet Explorer Script Error') and (WinClass='Internet Explorer_TridentDlgFrame'));
    ShouldClose:=ShouldClose or ((WinCaption='Internet Explorer') and (WinClass='#32770'));
    if ShouldClose then SendMessage(wnd, WM_CLOSE, 0, 0);
    end;//if should show
  end;//if loose focus
end;//TrapWM_Activate


procedure TMainForm.WMActivate(var Msg: TWMActivate);
begin
TrapWM_Activate(Msg);
inherited;
end;



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Sergey912
Дата 29.1.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



December, 
Гм, не работает. Если первая процедура как я понял делает закрытие окна, то что делает вторая? Когда окно появляется ничего не срабатывает...
PM MAIL WWW   Вверх
December
Дата 30.1.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



В интерфейсе формы пропиши procedure WMActivate(var Msg: TWMActivate) message WM_Activate;
как-то так


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Sergey912
Дата 31.1.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



December, 
Это я прописал для обоих функций, я говорю, что в таком виде код работать не хочет совсем и пропускает все JS ошибки.
А как процедура WMActivate(var Msg: TWMActivate); их отлавливает? Может попробовать как-то подругому?
PM MAIL WWW   Вверх
Alexeyt
Дата 7.2.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: 1
Всего: 2



Цитата(December @ 26.9.2006,  17:23)
Таково поведение ком-объекта: даже если ты отключил в осле показ ошибок скрипта, он все равно их показывает.
1) Данная функциональность реализована в TEmbeddedWB
2) Если у тебя задача оооочень специфическая (ты чётко знаешь, какие страницы будут грузиться), то самое дешёвое решение - поставить Silent:=true. Но вообще так делать нельзя, потому что нарушается функциональность во многих других областях.


Можно подробней плиз? Почему Silent=True приведет к ошибкам, к каким?

У меня стоит именно Silent=True, вроде все работает. Какие могут быть проблемы?

Это сообщение отредактировал(а) Alexeyt - 7.2.2007, 11:26
PM WWW   Вверх
December
Дата 7.2.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Есть ещё как минимум 3 диалога, подавление которых приводит к некорректной работе страницы или окна. Это
1) HTTP Authorization
2) JS prompt() function
3) JS alert() function
Думаю, есть и ещё диалоги, которые мне сразу в голову не пришли.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.