Присвоение тегу script идентификатора
Я столкнулся с сценарием, в котором атрибут script
атрибут id
мог бы легко решить проблему. Однако после прочтения элемента script
в w3schools и quirksmode, похоже, что это может иметь некоторые непредвиденные последствия.
Кто-нибудь сталкивается с любой из этих проблем с браузерами, такими как Chrome, Safari, FF3 и IE 7?
Ответы
Ответ 1
Это прекрасно во всех современных браузерах.
Единственный браузер, получивший <script id>
неправильный, был Netscape 4, который мы перестали заботиться о долгое время назад.
Эта страница quirksmode выглядит плохо устаревшей, что с ее использованием атрибутов language
, script <!--
скрывается и application/x-javascript
. Его совет об избежании <script>
в <body>
(и помещая его в <head>
) не соответствует сегодняшним поощряемым практикам.
Если мы говорим о проблемах с совместимостью с атрибутами <script>
: defer
не работает везде, поэтому не полагайтесь на него; charset
не работает повсюду, и ни параметр charset на обслуживаемом script Content-Type, поэтому ваша кодировка script не лучше соответствует странице; type
всегда должен быть text/javascript
, а не одной из нерабочих альтернатив, которую хотели бы использовать педанты, которые писали RFC 4329.
Ответ 2
Если вам все еще нужно поддерживать Netscape 4, у вас есть много проблем - и жалость и соболезнования остальным мирам разработчиков.
Короткий ответ, я бы не стал беспокоиться об этом.
Ответ 3
Я не думаю, что у браузера возникнет проблема, добавив атрибут id
к элементу script
.
На некоторых моих сайтах, которые загружают дополнительные JavaScripts через JavaScript, я добавил атрибут class
, чтобы упростить их ссылку. Валидатор не жаловался.
Ответ 4
Я знаю, что прошло много времени, но я подумал, что было бы неплохо указать, что когда вы смотрите определение W3 Schools тега script, в какой-то момент вы видите, что
Тег также поддерживает Глобальные атрибуты в HTML.
и среди этих атрибутов ta-da вы найдете свой прекрасный идентификатор.
То же самое можно сказать о множестве тегов, которые, несомненно, дадут нам большую гибкость, когда вытащите этот красивый трюк из шляпы.
Ответ 5
Имейте в виду, что установка id
для любого элемента представляет новую глобальную переменную с тем же именем, что и атрибут id
:
![id как глобальная переменная]()