Можно ли импортировать таблицы стилей CSS в HTML-страницу, используя Javascript? Если так, как это можно сделать?
PS javascript будет размещен на моем сайте, но я хочу, чтобы пользователи могли добавлять <head>
теги своего сайта, и он должен иметь возможность импортировать файл css, размещенный на моем сервере, в текущую веб-страницу. (и файл css, и файл javascript будут размещены на моем сервере).
javascript
html
css
dhtml
Нажмите Upvote
источник
источник
Ответы:
Вот способ «старой школы», который, надеюсь, работает во всех браузерах. Теоретически, вы бы использовали,
setAttribute
к сожалению, IE6 не поддерживает его последовательно.В этом примере проверяется, был ли CSS уже добавлен, поэтому он добавляет его только один раз.
Поместите этот код в файл javascript, попросите конечного пользователя просто включить javascript и убедитесь, что путь CSS является абсолютным, чтобы он загружался с ваших серверов.
VanillaJS
Вот пример, который использует простой JavaScript для вставки CSS-ссылки в
head
элемент на основе части имени файла в URL:Вставьте код непосредственно перед закрывающим
head
тегом, и CSS будет загружен до визуализации страницы. Использование внешнего.js
файла JavaScript ( ) приведет к появлению флэш-памяти нестандартного содержимого ( FOUC ).источник
link.onload = function(){ ... }
Если вы используете JQuery:
источник
$('head').append('<link rel="stylesheet" type="text/css" href="https://dl.dropboxusercontent.com/s/ep1nzckmvgjq7jr/remove_transitions_from_page.css">');
Я думаю, что-то вроде этого скрипта будет делать:
Этот файл JS содержит следующее утверждение:
Адрес javascript и css должен быть абсолютным, если они ссылаются на ваш сайт.
Многие методы импорта CSS обсуждаются в этой статье «Скажи нет CSS-хаки с методами ветвления» .
Но в статье «Использование JavaScript для динамического добавления таблиц стилей CSS для портлета» упоминается также возможность CreateStyleSheet (собственный метод для IE):
источник
document.createStyleSheet()
в браузеры, у которых его нет: stackoverflow.com/questions/524696/…document.write
это не рекомендуется, поскольку оно перезаписывает весь текст вашего сайта.<style>
элемента вместо того, чтобы предполагать, что это первый дочерний элемент<head>
via("head")[0]
?var style = document.getElementsByTagName("style")[0];
Element.insertAdjacentHTML имеет очень хорошую поддержку браузера и может добавить таблицу стилей в одну строку.
источник
Если вы хотите знать (или подождать), пока сам стиль не загрузится, это работает:
источник
Я знаю, что это довольно старая тема, но вот мои 5 центов.
Есть другой способ сделать это в зависимости от ваших потребностей.
У меня есть случай, когда я хочу, чтобы файл CSS был активен только некоторое время. Как переключение CSS. Активируйте CSS, а затем после другого события деактивируйте его.
Вместо того, чтобы динамически загружать css и затем удалять его, вы можете добавить идентификатор Class / id перед всеми элементами в новом css, а затем просто переключить этот класс / id базового узла вашего css (например, тега body).
В этом решении вы бы изначально загружали больше CSS-файлов, но у вас есть более динамичный способ переключения макетов CSS.
источник
В современном браузере вы можете использовать
promise
вот так. Создайте функцию загрузчика с обещанием:Тогда, очевидно, вы хотите что-то сделать после загрузки CSS. Вы можете вызвать функцию, которая должна запускаться после загрузки CSS следующим образом:
Полезные ссылки, если вы хотите глубже понять, как это работает:
Официальные документы по обещаниям
Полезное руководство к обещаниям
Отличное вступительное видео об обещаниях
источник
Используйте этот код:
источник
Существует общий плагин jquery, который загружает css и JS файлы, синхронизируя и asych по требованию. Он также отслеживает то, что уже загружено :) см. Http://code.google.com/p/rloader/
источник
Вот способ с методом создания элемента jQuery (мои предпочтения) и с обратным вызовом
onLoad
:источник
Библиотека YUI может быть тем, что вы ищете. Он также поддерживает междоменную загрузку.
Если вы используете jquery, этот плагин делает то же самое.
источник
Вы можете использовать для этой библиотеки YUI или использовать эту статью для реализации
источник
Ниже полный код, используемый для загрузки JS и / или CSS
источник
Я хотел бы поделиться еще одним способом загрузить не только css, но и все ресурсы (js, css, images) и обработать событие onload для группы файлов. Это
async-assets-loader
. Смотрите пример ниже:По асинхронным активам-погрузчиком документы
источник
Я использую тимелист, и это отлично работает. Спасибо
источник
th:href
атрибут на стороне клиента? Он не будет обрабатываться Thymeleaf, поэтому здесь он кажется излишним.