İşte umarım tüm tarayıcılarda çalışan "eski okul" yolu. Teorik olarak, setAttribute
ne yazık ki IE6 tutarlı bir şekilde desteklemez kullanırsınız .
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);
}
Bu örnek, CSS'nin önceden eklenmiş olup olmadığını kontrol eder, böylece yalnızca bir kez ekler.
Bu kodu bir javascript dosyasına koyun, son kullanıcının basitçe javascript eklemesini sağlayın ve CSS yolunun mutlak olduğundan emin olun, böylece sunucularınızdan yüklenir.
VanillaJS
head
URL'nin dosya adı bölümüne göre öğeye bir CSS bağlantısı enjekte etmek için düz JavaScript kullanan bir örnek :
<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>
Kodu kapanış head
etiketinden hemen önce ekleyin; sayfa oluşturulmadan önce CSS yüklenecektir. Harici bir JavaScript ( .js
) dosyası kullanmak , stilsiz içerik ( FOUC ) içeren bir Flash'ın görünmesine neden olur.