Разбор данных Javascript в IE против других браузеров ... Кажется, что-то напортачило. В чем дело? - PullRequest
0 голосов
/ 18 марта 2010

Во-первых, когда я говорю о других браузерах, я имею в виду только Firefox, потому что это все, что я тестировал.

Internet Explorer может анализировать дату, за которой следует один символ, как правильную дату. В то время как Firefox ведет себя так, как я ожидал.

Например ...

var dateString = new Date("1/1/2010f");
alert(dateString);

В IE он будет предупреждать ...

Чт 31 декабря 21:00:00 UTC-0900 2009

Тогда как в ФФ это будет выплевывать ...

«Неверная дата»

Впервые я заметил это, используя плагин проверки jquery.

http://docs.jquery.com/Plugins/Validation/Methods/date

Кажется, что это просто вычитает некоторое количество часов от фактической даты в IE, когда символ добавляется. Я тестировал в IE6 и IE8.

Я что-то упустил?

Ответы [ 2 ]

3 голосов
/ 18 марта 2010

Это зависит от реализации. Когда Date в качестве «конструктора» передается строковый объект, он пытается построить дату с помощью метода parse (Date.parse). Этот метод должен анализировать строки, возвращаемые Date.toString() и Date.toUTCString(), которые возвращают оба формата в зависимости от реализации. И это так, как говорит стандарт ECMAScript.
Я помню, как читал это в «Книге носорогов» (великая книга Томми Фланагана о JavaScript).

На практике вполне может оказаться, что все, кроме IE, делают это одинаково, но я не провел тщательного тестирования.
Кроме того, это немного, если IE пытается проанализировать все, что кто-то бросает в него, и создает объект Date из супа ascii.

0 голосов
/ 18 марта 2010

Internet Explorer использует другой механизм синтаксического анализа, который может или не может быть задокументирован, и может быть очень сломан в некоторых или многих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...