Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как узнать адрес предыдущей страницы с помощью JS? (http://forum.oszone.net/showthread.php?t=65756)

Vlad Drakula 16-05-2006 11:35 438584

Как узнать адрес предыдущей страницы с помощью JS?
 
Как узнать адрес предыдущей страницы с помощью JS?

ЗЫ
это нужно сделать в IE!

hasherfrog 16-05-2006 11:47 438586

document.referrer ?

Vlad Drakula 16-05-2006 11:59 438589

hasherfrog
попробовал... тусто...

alert(document.referrer);

dmitryst 16-05-2006 12:08 438593

Vlad Drakula
А с document.history не пробовали?

hasherfrog 16-05-2006 12:13 438597

parent.document.referrer
top.document.referrer
window.document.referrer
?

Vlad Drakula 16-05-2006 12:20 438601

dmitryst
Цитата:

А с document.history не пробовали?
ие не поддерживает нужные методы. в FF все бы работало... а нужно в ИЕ!

hasherfrog 16-05-2006 12:26 438609

http://support.microsoft.com/?kbid=178066

Vlad Drakula 16-05-2006 12:37 438613

hasherfrog
не в тему...
"Internet Explorer Does Not Send Referer Header in Unsecured Situations" это к серверу... а мене веть нужно на странице...

hasherfrog 16-05-2006 12:46 438615

Почему не в тему? :] Я-то не знаю, где Вы смотрите... :] MSIE-то какой? И сам метод referrer у document есть?

Vlad Drakula 16-05-2006 12:53 438617

hasherfrog
1) "MSIE-то какой?" - 6.*
2) "И сам метод referrer у document есть?" - не метод, а аттрибут...
3) "Почему не в тему?" - там речь идет о отсылке на сервер... а мне нужно это получить на клиенте...

hasherfrog 16-05-2006 13:08 438620

1) замечательно. только что проверил (не поленился перезагрузиться) - всё работает.
2) да, аттрибут. И он пустой, так выходит?
3) по-прежнему не понятно :]

Такое впечатление, что Вы открыли локальную страницу с диска и пытаетесь узнать у неё javascript:alert(document.referrer);
Так это и у FF пусто будет... ???

Или если URL руками вбить - тоже пусто будет.
Или если страница после какого-нибудь POST-запроса...
Или... эээ... чего там ещё бывает...

Я-то думал, Вы по ссылкам ходите, а у Вас referrer пустой...

hasherfrog 16-05-2006 13:21 438628

___

Конкретный пример: Нажмите "Навигация -> Новые сообщения".
У первого ("Подождите") окна referrer есть, у второго ("Результаты поиска") - уже не будет.
Если же на странице "Подождите" нажать "выполняется" - будет.
Я может, путаю чего-то, но ИМХО, страница с сайта MS тут как раз при делах :]


Или пост в данную тему - "итоговая" страница не имеет referrer :]

Vlad Drakula 16-05-2006 13:33 438633

hasherfrog
мне нужно та ссылка куда поведет window.history.go(-1)
если document.referrer выдает посто, а window.history.length > 0 то значит это плохо...

Prisoner 16-05-2006 14:06 438642

Судя по MSDN (объекты history, location) нет быстрых способов определения предыдущей страницы без перехода на нее. Вероятно, что в случае с IE придется таскать с собой на каждой странице в переменной адрес предыдущей.

hasherfrog 16-05-2006 14:15 438643

>> мне нужно та ссылка куда поведет window.history.go(-1)

Не получится. Никак. Объект history для некоторых методов/аттрибутов требует определённых привилегий: UniversalBrowserRead.
И вообще - это нереально с точки зрения безопасности. Кто мне мешает (если у меня есть доступ к хистори) вывалить её в форму и отправить дяде Билли?

>> если document.referrer выдает посто, а window.history.length > 0 то значит это плохо...

document в иерархии окно-документ обладает гораздо меньшими "правами".
Есть много чего, что недоступно ему. Так что значит, что это ничего не значит.

Подробно см. тут: http://www.mozilla.org/projects/secu...d-scripts.html
CTRL+F: function getHistory(i)

HTML код:

<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 438654

hasherfrog
Цитата:

Попробуйте выполнить на мозилле FF.
FF не интересует... нужно чтобы это работало в IE....

а в IE этот код не ртаботает...

hasherfrog 16-05-2006 15:13 438668

Вы не поняли :] "Попробуйте" - значит, "посмотрите, что будет".
А будет "Ахтунг!" - и я не думаю, что MSIE более доверчивый :]

Чтобы заработало в IE, достаточно убрать запрос привилегии.
Но значения массива хистори будут undefined.
Естественно.

Vlad Drakula, помните я тут http://forum.oszone.net/thread-61346.html пыхтел?
Мне как раз надо было знать, с какой [предыдущей] страницы бот (простейший javascript'ный) попал на данную страницу.
Это к замечанию Prisoner-а, видимо :]


Время: 22:11.

Время: 22:11.
© OSzone.net 2001-