Ось "стара школа" спосіб це зробити, який, сподіваємось, працює у всіх браузерах. Теоретично, ви б, 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 ).