2010-04-29 1 views
50

Я столкнулся с сценарием, в котором с помощью элемента script атрибут id мог бы легко решить проблему. Однако после прочтения элемента script на w3schools и quirksmode, похоже, что это может иметь некоторые непредвиденные последствия.Предоставление тега сценария ID

Кто-нибудь сталкивался с любой из этих проблем с такими браузерами, как Chrome, Safari, FF3 и IE 7?

+0

Это старый вопрос, но это выглядит как Google полосы Tag Manager из атрибута 'id', поэтому, вероятно, стоит инвестировать в альтернативный подход (возможно). – Alan

ответ

75

Это нормально во всех браузерах.

Единственным браузером, получившим <script id>, был Netscape 4, который мы перестали заботиться о долгое время назад.

Эта страница quirksmode выглядит плохо устаревшей, что с ее использованием атрибутов language, скрипт <!-- скрывается и application/x-javascript. Его совет о том, чтобы избежать <script> в <body> (и помещая его в <head>), не согласуется с сегодняшними поощряемыми практиками.

Если мы говорим <script> проблемы с совместимостью атрибутов: defer не работает везде, поэтому не полагайтесь на него; charset не работает повсюду, а также не имеет параметра charset в Content-Type обслуживаемого скрипта, поэтому ваш набор символов для скриптов лучше соответствует странице; type всегда должен быть text/javascript и не один из неработающих альтернатив, который педаты, написавшие RFC 4329, хотели бы использовать.

+20

История поддержки атрибутов вашего браузера поражает меня! +1 – alex

+0

Ну, я немного обманул, так как quirksmode упоминает его :-) Я помню проблему, но я не мог сказать вам, что версия Netscape это была ... brrr, плохие времена. – bobince

+0

Спасибо вам, ребята .. –

2

Я не думаю, что браузер столкнулся бы с проблемой, добавив атрибут id в элемент script.

На некоторых моих сайтах, которые загружают дополнительные JavaScripts через JavaScript, я добавил атрибут class, чтобы упростить их ссылку. Валидатор не жаловался.

6

Если вам все еще нужно поддерживать Netscape 4, у вас много проблем - и жалость и соболезнования остальной части мира разработчиков.

Короткий ответ, я бы не стал беспокоиться об этом.

2

Я знаю, что прошло много времени, но я подумал, что неплохо было бы указать, что, когда вы смотрите на W3 Schools definition of the script tag, вы видите, в какой-то момент, что

Тег также поддерживает Global Attributes in HTML.

и среди этих атрибутов ta-da вы найдете свой прекрасный идентификатор.

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

1

Имейте в виду, что установка id на любом элементе вводит новую глобальную переменную с тем же именем, что и id атрибута:

id as a global variable