2012-05-12 9 views
9

私は、次を使用して/無効にスタイルシートを有効にするには、JavaScriptを使用しています:HTML「リンク」(スタイルシート)disabled属性

document.styleSheets[0].disabled = true|false; 

このJSが正常に動作します、しかし私は、デフォルトでは無効にするスタイルシートをしたいと思います。上記のJSを使用して、ページが読み込まれるとすぐにスタイルシートを無効にすることができますが、これはJavaScriptがオフになっているユーザーには当然機能しません。私はこれをやってみました

:この一方で

<link rel="stylesheet" href="style.css" disabled /> 

は、スタイルシート、JavaScriptを無効にします(あるいは、少なくとも私が使用している方法は)それを再度有効にすることはできません。私はまた、これらのバリエーションをすべて「無効」属性、つまりdisabled="disabled",disabled="true"disabled=trueで試しましたが、同じ問題が発生します.JavaScriptで再度有効にすることはできません。つまり、JavaScriptを使用して外部スタイルシートを有効/無効にする方法が必要ですが、スタイルシートはデフォルトでは無効にしていますが、JavaScriptには依存しません。

ご協力いただければ幸いです。ありがとう。

N.B.この効果は、2つのスタイルシートを使用することで実現できます.2番目のスタイルシートは最初のものを上書きするため、「無効」属性は必要ありません。しかし、可能であれば、単一のスタイルシートを使用することが望ましいことは明らかです。

答えて

11

あなたはそのためのJavaScriptのremoveAttributeメソッドを使用することができます:this exampleから撮影

、あなたのようなものを使用することができます。

<html> 
    <head> 
     <link id="first_style" rel="stylesheet" href="#" disabled /> 

     <script type="text/javascript"> 
      window.onload = function() 
      { 
       document.getElementById('first_style').removeAttribute('disabled'); 
      } 
     </script> 
    </head> 
    <body> 
     <p>something</p> 
    </body> 
</html> 
+0

ありがとうございます。これは完璧です。私はこれを考えなかった理由を知らないので、disableAttributeを使用して無効にし、addAttributeを使用可能にすることができます。 – VettelS

+0

よろしくお願いいたします。うれしいことにサービスと待っています...ベテルズ、あなたはレーシングファンですか? –

+0

もちろん!最高のファン= =) – VettelS

1

この場合、JavaScriptを使用する必要があるかもしれません。

デフォルトでは無効にするのではなく、必要に応じてスタイルシートを提供するという考え方をさらに深めて考えるならば、それを釘付けにする必要があります。

2

JavaScriptを有効にしている場合にのみCSSをロードしてください。

var fileref=document.createElement("link") 
fileref.setAttribute("rel", "stylesheet") 
fileref.setAttribute("type", "text/css") 
fileref.setAttribute("href", filename) 
+0

これを使用すると、スタイルシートがロードされた後でもJavaScriptを有効にしたり無効にしたりできますか? – VettelS

+0

提供されたリンクをご覧になっている場合は、JavaScriptを使用してCSSファイルを削除する方法も説明されています。 –

関連する問題