У меня есть букмарклет, который вставляет таблицу стилей CSS в целевой DOM с помощью тега "link" (внешняя таблица стилей).
В последнее время это перестало работать на Amazon.com, только в Internet Explorer. Он работает на других сайтах и с другими браузерами (даже на Amazon.com). Техника, которую мы используем для вставки таблицы стилей, довольно проста:
document.getElementsByTagName('head')[0].appendChild(s);
Где "s" - объект ссылки, созданный с помощью document.createElement
. Даже в Amazon я вижу через инспектора DOM панели инструментов разработчика Internet Explorer, что этот элемент есть. Однако , если я сообщу коллекцию document.styleSheets
в JavaScript, ее там нет.
В качестве теста я пытался использовать метод IE1-only document.createStyleSheet , передавая URL-адрес моей таблицы стилей в качестве аргумента. Это выдает ошибку:
Недостаточно памяти для
завершите эту операцию
Достопримечательности:
- В документации для
document.createStyleSheet
говорится, что будет выдано сообщение об ошибке, если на странице более 31 таблицы стилей, но (1) это другая ошибка и (2) на странице всего 10 внешних таблиц стилей.
- В поисках ошибки я обнаружил ряд тупиков, и единственное, что предлагало что-либо связанное со таблицей стилей, было это сообщение о друпе , но оно относится к ограничению символов для встроенных стилей, так как в отличие от проблемы, связанной с внешними стилями.
- Тот же код, даже вызов
createStyleSheet
, работает на других сайтах в IE.
Это достигло для меня статуса "полной тайны".