Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с document.location (https://javascript.ru/forum/misc/1513-problema-s-document-location.html)

p0hil 04.08.2008 16:47

Проблема с document.location
 
IE 6.0 не хочет переходить по document.location.href. Вот код:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title></title>
</head>
<script type="text/javascript" language="JavaScript">
function go2Page(url) {
document.location.href = url;
}
</script>
<body>
<a href='javascript:void(0);' onclick='go2Page("http://www.e1.ru")l'>1</a>
</body>
</html>
Все остальные браузеры переходят на http://www.e1.ru, а IE просто ничего не делает. Подскажите, плз, в чем дело.

ZoNT 04.08.2008 17:01

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title></title>
</head>
<script type="text/javascript" language="JavaScript">
function go2Page(url) {
	document.location.href = url;
	return false;
}
</script>
<body>
<a href='#' onclick='return go2Page("http://www.e1.ru");'>1</a>
</body>
</html>

p0hil 05.08.2008 10:46

Спасибо, помогло. Кстати непонятно почему, но в IE еще сработало location.href.

Андрей Параничев 05.08.2008 14:38

Странно, я всегда думал, что location это свойство объекта window.

Takker 14.05.2010 17:45

У меня похожая (наверное) проблема с этим:
<script language="javascript">
function up(){
  scroll(1,10000000);
}
window.parent.voc_js_main.window.up();
window.setTimeout('document.location.href="js_writer.php?session=a364b7fd9eae0f19c1dd87f5105498c8&last_message=45"',5000);
</script>

(простенький чат)
В FireFox такое почему-то не работает. Наверняка на какой-нибудь глупости подсел, но вот уже весь день бьюсь над этой проблемой и не могу найти ошибки. Возможно, я что-то не принимаю в расчет?

Ред: в примере указываются конкретная сессия и последнее сообщение для наглядности. Но в логах апача подобного запроса нет и в помине.

Gvozd 14.05.2010 18:15

Takker,

Цитата:

Сообщение от Андрей Параничев
Странно, я всегда думал, что location это свойство объекта window.


Takker 14.05.2010 21:27

Знания, говорят, страшная сила. И чем сильнее, то есть глубже вникаю в нюансы, тем более страшусь:
Цитата:

Не путайте объект location со свойством location объекта document. Вы не можете изменить значение свойства location (document.location), но вы можете изменить значение свойств объекта location (window.location.propertyName). document.location является строковым значением, которое обычно равно window.location.href, который устанавливается когда вы загружаете документ, но перенаправление может изменить его.
Как я понял... поправьте меня, если ошибаюсь - это очень важно для общего понимая BOM. Как я понял, "зеленый location" (выделенный зеленым) - это свойство window и одновременно "зеленый location" является сам объектом со своими свойствами и методами.

Примечание: что странно, конструкция из предыдущего поста работает на другом проекте (в том числе в браузере FF). Изменение свойства window.location.href так же работает в IE, но в FF все равно не работает.. и в чем загвоздка - понять не могу :(

Takker 23.05.2010 12:03

Так никто не подскажет, почему window.location.reload() может не работать в FireFox?

Takker 23.05.2010 13:50

Думаю, для полноты вопроса мне нужно описать картину вцелом. Итак, есть документ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title></title>
</head>
<frameset rows="*,0" frameborder="no" framespacing="0" border="0" borderwidth="0">
	<frame src="js_main.php?session=94001bb0033e5783bcfab9c7a9a76dd9" noresize scrolling="auto" marginwidth="0" marginheight="0" id="js_main" name="js_main">
	<frame src="js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9" noresize scrolling="no" marginwidth="0" marginheight="0">
</frameset>
</html>

параметр session конечно же приходит извне, проверяется в php и вставляется в src фреймов. Фрейм js_main пуст. Основная работа происходит в невидимом для юзера фрейме js_writer. В нем генерируется следующий код для двух случаев. Первый, если через GET передается только сессия:
<html>
<body>
<script type="text/javascript">
with (parent.js_main.document){
open();
write('<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n');
write('<html>\n');
write('<head>\n');
write('	<title></title>\n');
write('    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n');
write('<script language=\"javascript\">\n');
write('function up()\n');
write('{\n');
write('	scroll(1,10000000);\n');
write('}\n');
write('<'+'/script>\n');
write('</head>\n');
write('<body>\n');
write('line:211 some text <br />');
write('line:212 some text <br />');
write('line:213 some text <br />');
write('line:214 some text <br />');
}
parent.js_main.window.up();
setTimeout('location.replace("js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9&last_message=214")',5000);
</script>
</body>
</html>

второй случай возникает только после срабатывания первого (либо после срабатывания самого себя). Когда через GET передается дополнительный параметр last_message
<html>
<body>
<script type="text/javascript">
with (parent.js_main.document){
  write('line:215 some text <br />');
  write('line:216 some text <br />');
}
parent.js_main.window.up();
setTimeout('location.replace("js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9&last_message=216")',5000);
</script>
</body>
</html>

Значение строк line генерируется в php - его трогать не будем, так как не работает показанный выше сгенерированный javascript. Как вы поняли - это незамысловатая реализация чата с обновлением раз в 5 секунд. И самое интересное, что в Internet Explorer этот код срабатывает, а вот FireFox не хочет его кушать.. вернее, через пять секунд фрейм не обновляется


Часовой пояс GMT +3, время: 17:06.