http://localhost/test.htm?id=123
28
123,
Прикол в IE и Опере.
Надо мне было из URL выцепить число, сформировать новый URL и на него редиректнуть. В Лисе код не работал.
Я потратил минут 15 на то, чтобы просечь в чем дело. Может, кто-нибудь видел подобные приколы, было бы интересно посмотреть.
Вот код:
Код:
function testMS()
{
sUrl = document.URL;
n = sUrl.indexOf('=', 0);
str = sUrl.substring(n+1, sUrl.lenght);
// window.lacation.href="test1.htm?id=" + str;
alert(sUrl + "\n" + n + "\n" + str);
}
{
sUrl = document.URL;
n = sUrl.indexOf('=', 0);
str = sUrl.substring(n+1, sUrl.lenght);
// window.lacation.href="test1.htm?id=" + str;
alert(sUrl + "\n" + n + "\n" + str);
}
URL - http://localhost/test.htm?id=123
При работе под IE и Оперой alert выдаёт:
Код:
а в FF вот что:
Код:
http://localhost/test.htm?id=123
28
http://localhost/test.htm?id=
28
http://localhost/test.htm?id=
Я как всегда на FF стал ругаться нехорошими словами, а оказывается ругаться надо на Оперу и ИЕ.
А всё дело оказалось в том, что если присмотреться по-внимательнее, то можно заметить, что sUrl.length у меня написано как sUrl.leng[color=red]ht[/color] и работать вообще не должно.
Вот такой вот прикол.
Когда разрабытывают компилятор, какого либо языка блок синтаксичекого анализа пытаеться найти ошибки, так вот, обычно в сильных компиляторах, такая ошибка как например зяпятая вместо точки с запятой при перечислении формальных параметров в функции (в Паскале) например, должна быть замечена, исправлена, код должен заработать, иразработчику должно выдаться предупреждение. Существует много методов исправления подобных ошибок, но суть в том что например подобная опечатка типа length - lenght у меня наверно встречаеться в 90% случаев написания этого слова в коде. Вот так. Так что тут всё нормально.
Но это означает, что в твоих 90% случаев код не будет работать под FireFox, поскольку он жестко следует стандарту, а там написано, что метод Javascript, используемый для вычисления длины строки называется length и никак иначе.
Возможно что проблема просто в том что Опера, предположим в режиме какой-нить разработки (или отладки) должна сказать что там у тебя опечатка. Вот. Наверно они подумали что юзеру не нужно знать о таких вещах.
Возможно.
FF например, в JavaScript консоли говорит, что не может преобразовать integer такую фигню. ИЕ вообще молчит.