2011-05-21 21 views
13

Merhaba Çocuklar,jQuery'yi kullanarak IE'de Stil Sayfaları nasıl eklenir?

Sadece bir eklenti oluşturmak çalışıyordum, ve bunu kendi eklentisi yüklü olduğu bu yüzden kullanıcılar sayfasının head bölümü üzerinde <link/> etiketi append istediğiniz kullanıcı dostu olması gerekiyordu . Diğer tüm tarayıcılarla (IE9, IE7 & IE6'dan emin değil) iyi çalışıyor ancak IE8 için çalışmıyor! Eklentimle neyin yanlış olduğunu anlamıyorum, bu yüzden bir örnek sayfa oluşturdum ve benzer bir problemle karşılaştım! Gittiğim yeri İşte burada benim test sayfası HTML + jQuery Kod ------

<html> 
     <head> 
       <script src="../jquery-1.6.min.js"></script> 
       <script> 
         $(document).ready(function() { 
          $(document.head).append('<link rel="stylesheet" type="text/css" href="style.css" />'); 
         }); 
       </script> 
     </head> 
     <body> 
       <h1>Text!</h1> 
     </body> 
</html> 

Ve benim CSS kodu -----

body { 
background:#ddd; 
} 
h1 { 
color: #789; 
} 

Yani herkes bana söyleyebilir yanlış mı yoksa bu yaşam problemi mi? İlk yorumu gördükten ve gittikten sonra ÖNCEDEN


İÇİNDE

TEŞEKKÜRLER verilen bağlayacak, sadece bu örnek kod oluşturulur ve şaşırtıcı bir şey buldum! Bkz bu ~~~

mesajı aldım benim IE8 tarayıcı ile bu sayfayı yürütülürken
<html> 
     <head> 
       <script src="../jquery-1.6.min.js"></script> 
       <script> 
         $(document).ready(function() { 
          if (document.getElementsByTagName('head')[0] === document.head) { 
          $("head").append('<link rel="stylesheet" type="text/css" href="style.css" />'); 
          }else { 
          alert('This doesn\'t supports head appending!'); 
          } 
         }); 
       </script> 
     </head> 
     <body> 
       <h1>Text!</h1> 
     </body> 
</html> 

o

This doesn't supports head appending! 

Eh I do not tarayıcımla yanlış veya bu IE8 fay ne ?


+0

Dupe ait: http://stackoverflow.com/questions/1184950/dynamically-loading-css-stylesheet-doesnt-work-on-ie kno –

cevap

27
if (document.createStyleSheet) 
{ 
    document.createStyleSheet("style.css"); 
} 
else 
{ 
    $("head") 
     .append('<link rel="stylesheet" type="text/css" href="style.css" />'); 
} 
+0

Teşekkür ederim dostum rock ~ bu, dünyadaki her tarayıcıyla çalışır! Tekrar teşekkürler! –

+5

Bu, IE'de bir bağlantı etiketi içeren HTML eklemeyi denerken jQuery'nin bir parçası olması gereken bir şey gibi gözüküyor. <9. –

+0

Katılıyorum, bu jquery'nin bir parçası olmalı. – FiveTools

5

Başlığa erişmek için document.head kullanıyorsunuz. document.head, HTML5’in bir parçası olarak DOM’e yalnızca yakın zamanda eklenmiştir. Yani, evrensel olarak desteklenmiyor.

Bunu kullanmak istiyorsanız, add a shim gerekir onu çağırmadan önce: o kullanmanın yarım noktası jQuery en sözdizimsel beri Aksi

document.head = document.head || document.getElementsByTagName('head')[0]; 

, sadece, tavsiye edilir <head> etiketine (doğrudan ekleyebilirsiniz şeker):

$("head").append(...); 
+0

w ama çalışmıyor, benim soru için en yeni Düzenle. IE8, "head" bölümünde ekleyerek etiketleri desteklemiyor !? –

+0

... uyarınız, yalnızca document.head'in desteklenmediğini, söylediğim gibi, JavaScript aracılığıyla kafanıza ekleyemeyeceğinizi kanıtlıyor. Eğer şeridi eklerseniz, çalışması gerekir. document.getElementsByTagName ('head') [0] 'evrensel desteğe sahiptir. – Yahel

+0

O zaman nasıl 'link' etiketi eklemek için? Lütfen bana yardım edin. –

İlgili konular