17 июня 2008

Referrer in Internet Explorer

Оказывается, Internet Explorer не передает referrer-а при открытии страниц в новом окне или вкладке. На открытой странице в javascript-е можно узнать referrer-а через window.opener.location. Однако, если попытаться получить window.opener через IHTMLWindow2::opener, то получим фиг нулевой указатель.

Попробовал через IHTMLWindow2::execScript выполнить SomeTempVar = window.opener.location.href (execScript не возвращает значения, приходится извращаться через временную переменную) - та же фигня.

Пришлось ловить NewWindow3 (а оно требует минимум IE6 в WinXP SP2), запоминать кто кого открыл, а потом "вспоминать" в другом экземпляре WebBrowser-а.

Поражаюсь разработчикам Internet Explorer-а.

2 комментария:

Unknown комментирует...
Этот комментарий был удален автором.
Unknown комментирует...

блин, жаль, что раньше не прочитал.

такое поведение совершенно верно, т.к. семантика реферрера (referer, да, с ошибкой :) ) - "переход по ссылке без открытия нового окна"

а прямой заход по ссылке, напечатанной в адресной строке браузера, новое окно или вкладка реферрера не имеют - это ж переход "вчистую".

иначе небезопасно получается :]