Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 970

/ вопрос открыт /

Здравствуйте, эксперты!
Доброго времени суток, уважаемые эксперты!
Я решил сделать свой собственный веб-обозреватель, но у меня возникла проблема, когда я в своем обозревателе захожу, допустим, на яндекс, нахожу инфу, а дальше кликаю на заголовок, но открывается окно Internet Explorer! Я бы хотел, чтобы открывалось окно такое же, как и родительское, у меня возникла идея организовать это в событии OnNewWindow, но я не могу получить URL, по которому происходит переход. Вопрос следующий: как мне получить URL в событии ONNewWindow или как сделать так, чтобы когда я перехожу по ссылке и открывается новое окно, то оно было такого же дизайна как и предыдущее

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

MAY Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: MAY (статус: Посетитель)
Вопрос отправлен: 5 октября 2008, 14:52
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, MAY!
Ну на самом деле всё очень просто. код, который удоволетворит всем Вашим требованиям - буквально пара строк.

procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
var
  NewWindow: TForm1;
begin
  // создадим новую форму, копию Form1. Если у Вас форма имеет другой тип - впишите верный
  NewWindow := TForm1.Create(self);
  //понятно, что надо её показать пользователю
  NewWindow.Show;
  //самая важная строка - дадим вызывающему броузеру некую ссылку на новое окно.
  ppDisp := NewWindow.Webbrowser1.DefaultDispatch;
end;
Почему не просто передать url? на самом деле для полноценной работы одного url недостаточно. Надо передать так называемое "окружения", сюда входят кукисы и другие скрытые параметры. В противном случае каждое новое окно будет новым - то есть, ничего не знать о том окне, которое его открыло.
Также у этого события есть параметр Cancel. Если присвоить ему true, то это значит, что пользователь не хочет, что бы это окно открывалось. Можно использовать например для блокировки баннеров. вот только осталось научиться узнавать по ppDisp url... но это уже другая история...

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 6 октября 2008, 01:19
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 12 декабря 2017, 21:12
Выполнено за 0.03 сек.
Рейтинг@Mail.ru