|
Модераторы: MetalFan |
|
Borland_Delphi_6 |
|
|||
LoneLINEss Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
В WebBrowser есть событие OnNewWindow2, но этой процедуре вроде бы не передается URL открываемой страницы. Так вот, можно ли его как-нибудь узнать (нужно для организации вкладок)?
-------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Сначала создавай закладку, а потом, когда страничка подгрузится (OnDocumentComplete), переименовывай.
Лучше даже будет на закладку класть не линк, а заголовок странички (как в Opera) |
|||
|
||||
Borland_Delphi_6 |
|
|||
LoneLINEss Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Snowy
Не, ты не понял. Нужно чтобы вкладка создавалась при попытке открытия ссылки в новом окне (target="_blank"). Но для этого мы должны знать URL нового окна. А его я как раз и не знаю! Вот как его можно узнать (и можно ли...)? -------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
December |
|
|||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
OnBeforeNavigate может тебе помочь
|
|||
|
||||
Borland_Delphi_6 |
|
|||
LoneLINEss Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Ок, а как узнать, что браузер пытается открыть новое окно?
-------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
December |
|
|||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
Первым выстреливает OnNewWindow. Запоминаем в нём ppDisp. Сразу после него срабатывает OnBeforeNavigate с таким же (по идее) ppDisp'om. После обработки этих двух событий мы имеем всю информацию о новом окне.
ЗЫ Не проверял Добавлено @ 23:58
В этом случае можно просто попытаться использовать параметр TargetFrameName у OnBeforeNavigate, однако это оставит дыру если юзер кликнет на ссылке, зажимая клавишу Shift, или из popup-menu к примеру. |
|||
|
||||
Усатый |
|
|||
Unregistered |
А как быть, если нужно запретить открытие URL в новом окне и принудительно открыть его в том же?
|
|||
|
||||
December |
|
||||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
Скорее всего, так: в событии onNewWindow пишем
Не проверял... Если не работает - маякни, что-нить придумаем. |
||||
|
|||||
Усатый |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.9.2005 Репутация: нет Всего: нет |
А что значит этот код?
Результат: новое окно не открывается. Но и перехода по ссылке тоже не происходит. |
|||
|
||||
December |
|
|||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
По идее, аргумент ppDisp является указателем на инстанцию TWebBrowser, в котором должна открыться страница. Ладно, домой приду - разберусь (часов через 9 ) Завтра выложу код. |
|||
|
||||
December |
|
|||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
Не прошло и трёх недель, как руки дошли до этого топика
С виду лёгкая задача вылилась в несколько часов сражений с ТВебБродилкой. Выяснилось следующее. 1. Приведённый выше пример таки работает... Когда попытка создать новое окно происходит из некоего вложенного фрейма. По-красивому перенаправить новое окно на самое себя не получается. 2. Задача всё же решаема, хоть и через некоторое шаманство. Для ритуала потребуется дополнительный TWebBrowser. Краткое содержание шаманской песни: при открытии новой отдельной страницы она направляется в запасной бродильник (TWebBrowser2), в котором мы коварно поджидаем события OnBeforeNavigate. В этом событии нам уже доступна информация о урле, флагах, пост-данных etc, и мы смело запускаем Navigate первого (основного) бродильника с этими параметрами. Таинство обряда: чтобы это сработало, надо иметь в запасном бродильнике созданный документ, например, путём навигации на about:blank. Ниже я привожу код, который демонстрирует данную технику. Для его прогона потребуютя Button1, WebBrowser1 и WebBrowser2.
|
|||
|
||||
Усатый |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.9.2005 Репутация: нет Всего: нет |
Странно... Зацикливается между WebBrowser1NewWindow2 и WebBrowser2BeforeNavigate2
|
|||
|
||||
December |
|
|||
Antitheorist Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 12 Всего: 57 |
Усатый
|
|||
|
||||
Усатый |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.9.2005 Репутация: нет Всего: нет |
Разобрался. Первому браузеру нельзя передавать TargetFrameName, поскольку он указывает на НОВОЕ окно - вот они и гоняют страницу друг другу Достаточно передать URL
|
|||
|
||||
doneto |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.4.2017 Репутация: нет Всего: нет |
а исходный код можно? ( что бы понять - что же все таки надо делать - когда браузер (элемент TWEbBrowser) пытается открыть ссылку в новом окне IE ( т..к. в html- написано ссылку открыть в _blank) - в новом окне... так как же ее перехватить?
|
|||
|
||||
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |