Вот способ «старой школы», который, надеюсь, работает во всех браузерах. Теоретически, вы бы использовали, setAttribute
к сожалению, IE6 не поддерживает его последовательно.
var cssId = 'myCss'; // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.id = cssId;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'http://website.com/css/stylesheet.css';
link.media = 'all';
head.appendChild(link);
}
В этом примере проверяется, был ли CSS уже добавлен, поэтому он добавляет его только один раз.
Поместите этот код в файл javascript, попросите конечного пользователя просто включить javascript и убедитесь, что путь CSS является абсолютным, чтобы он загружался с ваших серверов.
VanillaJS
Вот пример, который использует простой JavaScript для вставки CSS-ссылки в head
элемент на основе части имени файла в URL:
<script type="text/javascript">
var file = location.pathname.split( "/" ).pop();
var link = document.createElement( "link" );
link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";
document.getElementsByTagName( "head" )[0].appendChild( link );
</script>
Вставьте код непосредственно перед закрывающим head
тегом, и CSS будет загружен до визуализации страницы. Использование внешнего .js
файла JavaScript ( ) приведет к появлению флэш-памяти нестандартного содержимого ( FOUC ).