Показать полную графическую версию : Как узнать адрес предыдущей страницы с помощью JS?
Vlad Drakula
16-05-2006, 11:35
Как узнать адрес предыдущей страницы с помощью JS?
ЗЫ
это нужно сделать в IE!
hasherfrog
16-05-2006, 11:47
document.referrer ?
Vlad Drakula
16-05-2006, 11:59
hasherfrog
попробовал... тусто...
alert(document.referrer);
dmitryst
16-05-2006, 12:08
Vlad Drakula
А с document.history не пробовали?
hasherfrog
16-05-2006, 12:13
parent.document.referrer
top.document.referrer
window.document.referrer
?
Vlad Drakula
16-05-2006, 12:20
dmitryst
А с document.history не пробовали?
ие не поддерживает нужные методы. в FF все бы работало... а нужно в ИЕ!
hasherfrog
16-05-2006, 12:26
http://support.microsoft.com/?kbid=178066
Vlad Drakula
16-05-2006, 12:37
hasherfrog
не в тему...
"Internet Explorer Does Not Send Referer Header in Unsecured Situations" это к серверу... а мене веть нужно на странице...
hasherfrog
16-05-2006, 12:46
Почему не в тему? :] Я-то не знаю, где Вы смотрите... :] MSIE-то какой? И сам метод referrer у document есть?
Vlad Drakula
16-05-2006, 12:53
hasherfrog
1) "MSIE-то какой?" - 6.*
2) "И сам метод referrer у document есть?" - не метод, а аттрибут...
3) "Почему не в тему?" - там речь идет о отсылке на сервер... а мне нужно это получить на клиенте...
hasherfrog
16-05-2006, 13:08
1) замечательно. только что проверил (не поленился перезагрузиться) - всё работает.
2) да, аттрибут. И он пустой, так выходит?
3) по-прежнему не понятно :]
Такое впечатление, что Вы открыли локальную страницу с диска и пытаетесь узнать у неё javascript:alert(document.referrer);
Так это и у FF пусто будет... ???
Или если URL руками вбить - тоже пусто будет.
Или если страница после какого-нибудь POST-запроса...
Или... эээ... чего там ещё бывает...
Я-то думал, Вы по ссылкам ходите, а у Вас referrer пустой...
hasherfrog
16-05-2006, 13:21
___
Конкретный пример: Нажмите "Навигация -> Новые сообщения".
У первого ("Подождите") окна referrer есть, у второго ("Результаты поиска") - уже не будет.
Если же на странице "Подождите" нажать "выполняется" - будет.
Я может, путаю чего-то, но ИМХО, страница с сайта MS тут как раз при делах :]
Или пост в данную тему - "итоговая" страница не имеет referrer :]
Vlad Drakula
16-05-2006, 13:33
hasherfrog
мне нужно та ссылка куда поведет window.history.go(-1)
если document.referrer выдает посто, а window.history.length > 0 то значит это плохо...
Prisoner
16-05-2006, 14:06
Судя по MSDN (объекты history, location) нет быстрых способов определения предыдущей страницы без перехода на нее. Вероятно, что в случае с IE придется таскать с собой на каждой странице в переменной адрес предыдущей.
hasherfrog
16-05-2006, 14:15
>> мне нужно та ссылка куда поведет window.history.go(-1)
Не получится. Никак. Объект history для некоторых методов/аттрибутов требует определённых привилегий: UniversalBrowserRead.
И вообще - это нереально с точки зрения безопасности. Кто мне мешает (если у меня есть доступ к хистори) вывалить её в форму и отправить дяде Билли?
>> если document.referrer выдает посто, а window.history.length > 0 то значит это плохо...
document в иерархии окно-документ обладает гораздо меньшими "правами".
Есть много чего, что недоступно ему. Так что значит, что это ничего не значит.
Подробно см. тут: http://www.mozilla.org/projects/security/components/signed-scripts.html
CTRL+F: function getHistory(i)
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Developer Studio">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Document Title</TITLE>
<SCRIPT>
function getHistory(i) {
//Attempt to access privileged information
return history[i];
}
function getImmediateHistory() {
//Request privilege
netscape.security.PrivilegeManager.enablePrivilege(
"UniversalBrowserRead");
var s = "";
for (var l=0; l < history.length; l++) { s += getHistory(l); s += "\n"; }
return s;
}
</SCRIPT>
</HEAD>
<BODY >
<!-- Insert HTML here -->
<INPUT TYPE="button" onClick="alert(getImmediateHistory());" ID="b">
</BODY>
</HTML>
Попробуйте выполнить на мозилле FF.
Vlad Drakula
16-05-2006, 14:36
hasherfrog
Попробуйте выполнить на мозилле FF.
FF не интересует... нужно чтобы это работало в IE....
а в IE этот код не ртаботает...
hasherfrog
16-05-2006, 15:13
Вы не поняли :] "Попробуйте" - значит, "посмотрите, что будет".
А будет "Ахтунг!" - и я не думаю, что MSIE более доверчивый :]
Чтобы заработало в IE, достаточно убрать запрос привилегии.
Но значения массива хистори будут undefined.
Естественно.
Vlad Drakula, помните я тут http://forum.oszone.net/thread-61346.html пыхтел?
Мне как раз надо было знать, с какой [предыдущей] страницы бот (простейший javascript'ный) попал на данную страницу.
Это к замечанию Prisoner-а, видимо :]
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.