| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Ошибки WebBrowser |
| Автор: Teran 26.9.2006, 11:54 |
| Иногда когда я загружаю страницу в TWebBrowser выскакивает окно: Internet Explorer Script Error ..... Do you want to continue running scripts on this page? Yes No Как можно сделать чтоб при ошибках скриптов - это окно не покзывалась ???? |
| Автор: Teran 26.9.2006, 16:14 |
| но когда эту же страницу(файл) загружаю грузиш IE - она грузится и никакие ошибки не выскакивают |
| Автор: December 26.9.2006, 17:23 |
| Таково поведение ком-объекта: даже если ты отключил в осле показ ошибок скрипта, он все равно их показывает. 1) Данная функциональность реализована в TEmbeddedWB 2) Если у тебя задача оооочень специфическая (ты чётко знаешь, какие страницы будут грузиться), то самое дешёвое решение - поставить Silent:=true. Но вообще так делать нельзя, потому что нарушается функциональность во многих других областях. 3) Можно перехватывать создание новых модальных окон и анализировать их... Это самый долгий трудный, но и самый универсальный способ... Так как JS Error - не единственное окно, из-за которого хочется скомкать и выбросить TWebBrowser. |
| Автор: Sergey912 19.1.2007, 10:29 |
| December, А можно поподробнее про третий способ, а то мне как раз окна нужны и только это не надо На каком уровне перехватывать окна? В самом браузере или на уровне приложения как-то нужно? И как это собственно реализовать на практике? |
| Автор: December 19.1.2007, 11:12 |
| Sergey912, смотри исходники TEmbeddedWB. Когда я смотрел, было очень криво написано, но в 90% случаев работало. |
| Автор: TrillerMan 21.1.2007, 11:52 |
| А как в исходниках оно самое искать? какие функции з аэто отвечают за перехват этих окон и за глушение их? А если у меня браузер visible:=false это окно всё ранво всплывёт или не будет появляться? |
| Автор: TrillerMan 21.1.2007, 15:05 |
| Ок спасибо большое,это только одна процедура? она уже за перехват всех функций отвечает ? буду рыть сорцы |
| Автор: Sergey912 28.1.2007, 14:38 |
| December, Нашел процедуру, только непойму как это самому сделать? |
| Автор: December 28.1.2007, 21:51 | ||
лови...
|
| Автор: Sergey912 29.1.2007, 17:40 |
| December, Гм, не работает. Если первая процедура как я понял делает закрытие окна, то что делает вторая? Когда окно появляется ничего не срабатывает... |
| Автор: December 30.1.2007, 17:19 |
| В интерфейсе формы пропиши procedure WMActivate(var Msg: TWMActivate) message WM_Activate; как-то так |
| Автор: Sergey912 31.1.2007, 12:10 |
| December, Это я прописал для обоих функций, я говорю, что в таком виде код работать не хочет совсем и пропускает все JS ошибки. А как процедура WMActivate(var Msg: TWMActivate); их отлавливает? Может попробовать как-то подругому? |
| Автор: Alexeyt 7.2.2007, 11:26 | ||
Можно подробней плиз? Почему Silent=True приведет к ошибкам, к каким? У меня стоит именно Silent=True, вроде все работает. Какие могут быть проблемы? |
| Автор: December 7.2.2007, 21:09 |
| Есть ещё как минимум 3 диалога, подавление которых приводит к некорректной работе страницы или окна. Это 1) HTTP Authorization 2) JS prompt() function 3) JS alert() function Думаю, есть и ещё диалоги, которые мне сразу в голову не пришли. |
| Автор: Yura_Matsuk 22.10.2007, 17:12 | ||||
Довольно таки ценный пример. Только скажите, каким образом этот код должен активироваться? |
| Автор: December 22.10.2007, 20:50 |
| Я там через несколько постов написал, в protected разделе объявления формы пропиши WMActivate как соответствующую сообщению WMActivate. Как это сделать написано везде |