Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   То-ли лыжи не едут, толи... возможно ошибка в коде. (https://javascript.ru/forum/misc/3697-li-lyzhi-ne-edut-toli-vozmozhno-oshibka-v-kode.html)

AzriMan 15.05.2009 10:50

То-ли лыжи не едут, толи... возможно ошибка в коде.
 
предыстория. обратилась ко мне одна сотрудница с информацией о том что на корпоративном сайте не работает один раздел. я

посмотрел-да, действительно. обновил у нее страницу-всё заработало. возникло предположение, что браузер закешировал старые js и возникла какая-то ошибка. повторюсь, после обновления страницы ошибка пропала. тогда я не придал этому значение. но,

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

браузер не мог "что-то" закешировать. и опять-после обновления страницы всё норм (человек сам обновил и об этом сообщил).

обе сотрудницы пользовались IE, вероятно, шестым.

воспроизвести похожую ситуацию не представляется возможным. поэтому прошу вас помочь. возникнет ли у вас в браузере

какая-либо ошибка? и если да, то какая?

маршрут, по которому "шел" пользователь:

главная страница: http://tinyurl.com/q8gduj
потом кликает в меню "АНАЛИТИКА" и выбирает второй пункт (http://tinyurl.com/ofyhz5)


p.s. на момент написания поста я смог добиться, что IE стал ругаться:
1. недопустимый знак, строка 2, символ 7.
2я строчка: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
причем, 1я строчка у меня была пустая. я сразу сейчас нашел в коде откуда она появляется и пофиксил. таким образом, 2я строчка стала 1й, а на место ее встала строка "<html>". но ошибка осталась именно в такой же формулировке и именно с 2й строкой, 7м символом.


код, который "это" выводит:
Код:

<?php
...
if (!isset($doctype))
        $doctype = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n";
echo $doctype;
?>
<html>
<head>
...


2. Предполагается наличие объекта, строка 520, символ 1.
520я строка: " this.style.backgroundColor= '#B01235';" "
несколько строчек рядом:
Код:

<td  nowrap class="DhtmlNavigation"
        onClick="location.href='/_russian/analytics/main/cur_rus.php'"
        onMouseOver="
        this.style.backgroundColor= '#B01235';"
        onMouseOut="this.style.backgroundColor= '';">
        <a class="item_link">- Россия</a>

</td>

хотя, кусков в коде, подобных этому, наберется достаточно - ошибка всё равно одна. и что-то мне подсказывает, что дело совсем не в этой 520й строке. и при всём при этом (точнее, при этих 2х ошибках в IE) - js код, расположенный на страницах, выполняется...

есть какие-нибудь идеи, что, вообще, is going on? :)

evgen28 15.05.2009 10:59

а можно увидеть код страницы до head полностью?
<?php
...
if (!isset($doctype))
$doctype = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n";
echo $doctype;
?>
<html>
<head>

AzriMan 15.05.2009 11:24

не вижу, чем это может помочь:
Код:

<?php
$server = $_SERVER['HTTP_HOST'];

include($_SERVER['DOCUMENT_ROOT']."/_text_misc/session.php");
include($_SERVER['DOCUMENT_ROOT']."/core/misc/menu_var.php");

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

кстати, да, я немного "обманул". написанный в прошлом посте код для главной страницы. для второй ссылки код - см тег code парой строчек выше. (у меня 2 template-файла, незначительно отличающиеся)

evgen28 15.05.2009 11:42

Попробуй поискать ошибку в session.php. Возможно у тебя неправильно выстраивается механизм сессий в php - из-за этого при первой загрузке страницы-одна страница, при ее обновлении показывается другая. У меня такое было на joomla-cms. Я ссылку когда передавал другим пользоавтелям-при первом открытии перенаправлялось на index.php начальной страницы, хотя при повторной вставке ссылки туда же и перезагрузке страницы все было правильно. Не помню как решил-по-моему был косяк с сессиями.

AzriMan 15.05.2009 12:09

я понял твою идею. в файле session.php редирект (header()) выполняется только при условии
Код:

if(isset($_POST['Submit']))
. при обычном переходе по ссылкам нет ни POST`а, ни Submit`а.

да, забыл добавить. проверял примерно на 5 разных компах. вот те две ошибки в IE, почему-то, срабатывают только у меня. настройки политик безопасностей браузера и прочего одинаковые.


p.s. основной интерес представляет повторение ошибки описанной в "предыстории". может у кого возникнет. ибо, со "слов", "страница открылась и ничего не работало". поясню: "ссылки/текста" были не кликабельны (при клике на текст происходит "разворачивание" скрытого DIV`а. при клике на чем-то внутри DIV`а подгружается контент с сервера)

x-yuri 15.05.2009 12:31

я как-то забил на попытки понять, как найти строку с ошибкой в ie, кроме как с помощью отладчика. Для этого должен быть установлен office (с ним ставиться microsoft script debugger) и включена отладка в ie
p.s. у меня никаких ошибок не возникает (ie 6, ie 7)

AzriMan 15.05.2009 12:38

Цитата:

Сообщение от x-yuri (Сообщение 19034)
я как-то забил на попытки понять, как найти строку с ошибкой в ie, кроме как с помощью отладчика. Для этого должен быть установлен office (с ним ставиться microsoft script debugger) и включена отладка в ie
p.s. у меня никаких ошибок не возникает (ie 6, ie 7)

т.е. сразу, с первого захода в подпункт аналитики всё работает, всё раскрывается и статистика успешно подгружается?

x-yuri 15.05.2009 13:03

да, изначально в свернутом состоянии, но можно посмотреть

AzriMan 15.05.2009 14:39

Цитата:

Сообщение от x-yuri (Сообщение 19039)
да, изначально в свернутом состоянии, но можно посмотреть

да, именно так и должно быть.

p.s. на IE забить не могу, ибо 64% посетителей это IE (FF & Opera -> 18% & 13%)

x-yuri 15.05.2009 14:59

так у тебя ж где-то получилось словить ошибку - осталось выяснить в какой строке она возникает и исправить
я ошибаюсь?

AzriMan 15.05.2009 16:58

получилось словить. и она выскакивает. и пока только у меня (причина, по которой ее нет в других IE - не ясна). осталось выяснить реальный номер строчки, а не тот, который пишет IE.
до MS script debugger еще не дошел. но дойду, т.к., вероятно, это будет возможная панацея.

x-yuri 16.05.2009 03:11

в некоторых случаях ms script debugger тоже не может помочь, например, когда лишняя запятая в объекте: {name1: 1, name2: 2,}
тогда помогает метод комментирования: ошибки нету? значит она была в только что закомментированном куске. Им можно воспользоваться, если нету отладчика

Riim 16.05.2009 03:23

Цитата:

Сообщение от x-yuri
значит она была в только что закомментированном куске

Из-за того что что-то закомментировано может начать происходить другая ошибка. Я так делаю:
Добавляю лишний перевод строки. Если номер строки с ошибкой увеличился, то смещаю его (перевод строки) ниже, иначе - выше. Быстро и надежно.

x-yuri 16.05.2009 08:44

интересный метод :)

AzriMan 18.05.2009 09:35

Цитата:

Сообщение от Riim (Сообщение 19134)
Из-за того что что-то закомментировано может начать происходить другая ошибка. Я так делаю:
Добавляю лишний перевод строки. Если номер строки с ошибкой увеличился, то смещаю его (перевод строки) ниже, иначе - выше. Быстро и надежно.

идея хорошая. раньше делал по принципу, описанному выше. закомментил весь код и по кусочкам раскомменчивал. но твоя идея тоже хорошая. но есть одно "но":

Цитата:

Сообщение от AzriMan (Сообщение 19013)
p.s. на момент написания поста я смог добиться, что IE стал ругаться:
1. недопустимый знак, строка 2, символ 7.
2я строчка: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
причем, 1я строчка у меня была пустая. я сразу сейчас нашел в коде откуда она появляется и пофиксил. таким образом, 2я строчка стала 1й, а на место ее встала строка "<html>". но ошибка осталась именно в такой же формулировке и именно с 2й строкой, 7м символом.



p.s. а что у тебя в IE?

x-yuri 18.05.2009 12:55

Цитата:

1. недопустимый знак, строка 2, символ 7.
2я строчка: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
причем, 1я строчка у меня была пустая. я сразу сейчас нашел в коде откуда она появляется и пофиксил. таким образом, 2я строчка стала 1й, а на место ее встала строка "<html>". но ошибка осталась именно в такой же формулировке и именно с 2й строкой, 7м символом
а почему ты решил, что речь об html-файле, а не о каком-нибудь подключаемом js-файле?

AzriMan 18.05.2009 14:17

Цитата:

Сообщение от x-yuri (Сообщение 19223)
а почему ты решил, что речь об html-файле, а не о каком-нибудь подключаемом js-файле?

а ведь действительно. ты прав.

AzriMan 18.05.2009 15:09

Вложений: 1
итак, что дал MS script debugger:
первый пункт.
Цитата:

Строка: 1; Ошибка: Недопустимый знак.
подсвеченой оказалась urchinTracker(); в коде
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-хххххх-у";
urchinTracker();


Закрывающего тега </script> нет, и это логично, до него, ведь, дело еще не дошло. самое забавное то, что находится по адресу src.. там оказывается GIF-ка. теперь самый интересный вопрос - откуда?
захожу на http://www.google-analytics.com/urchin.js директ линком. FF отдает самый обычный JS, а вот IE (картинка ниже, исходник во вложении)... кто-нибудь с таким сталкивался? )




--edited
вторая часть: "Строка 524, Ошибка: Предполагается наличие объекта".
<td  nowrap class="DhtmlNavigation"
	onClick="location.href='/_russian/analytics/main/cur_rus.php'" 
524:	onMouseOver="
	this.style.backgroundColor= '#B01235';" 
	onMouseOut="this.style.backgroundColor= '';">
	<a class="item_link">- Россия</a>
</td>


и что самое интересное! стоит мне только закомментить кусок с кодом от Google Analytics, как MS script debugger перестает ругаться на эту 524 строчку! как они вообще взаимосвязаны?

--edited x2
поубирал лишние \r\n после onMouseOver=" (хотя должно работать и так). в итоге, ошибка осталась такой, какой и была "Строка 524, Ошибка: Предполагается наличие объекта", но вот код изменился:
<table border="0" cellspacing="0" cellpadding="0">
<tr>  <!-- 524 -->
	<td width="196" id="item_news_inv" style="border-width:1px"  nowrap class="DhtmlNavigation" 
	onClick="location.href='/_russian/investors/main/plans_rus.php'" 
	onMouseOver="this.style.backgroundColor= '#B01235';" 
	onMouseOut="this.style.backgroundColor= '';">
...


проблема была не в этой строчке. возникает предположение, что это как-то связано с файлом urchin.js
524я строчка в нем - закрывающая фигурная скобка функции __utmSetVar() (наверно нет смысла приводить ее листинг здесь, т.к. файл доступен по ссылке выше)

куда копать дальше?

(пойду почитаю на сайте гугл аналитикс на предмет вызова urchinTracker();.. возможно, изначально была допущена какая-то ошибка при использовании.. (код GA изначально добавлялся до меня)

x-yuri 18.05.2009 15:21

мне опять же ie отдает js... посмотри внешним сниффером, какой ie запрос посылает и принимает

AzriMan 18.05.2009 16:07

Цитата:

Сообщение от x-yuri (Сообщение 19246)
мне опять же ie отдает js... посмотри внешним сниффером, какой ie запрос посылает и принимает

аналогично. проверил на нескольких других машинках. в IE отдается js.. насчет сниффера думал. если получится - проверю.


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