2009-10-21 11 views
39

ページからCSSをアンロードする方法が不思議です。例えば私のページには、a.cssというファイルが含まれています。今私はCSSを駆動するテーマを変更することができるように、彼/彼女はa.cssをアンロードすることができますし、b.cssをロードすることができます(そうでなければ、彼らは競合します)ウェブページからCSSをアンロード

任意のアイデアこれについてどうやって行くの?

+0

私は知りませんが、ExtJSのフレームワークは、機能のような種類を提供していますので、ここでのソリューションが動作しない場合は、あなたがそこに見ている可能性が.... – TheHippo

答えて

56

は、リンク要素を取り、それをjQueryを使って

​​
+0

これはうまくいくようです。 –

+0

素晴らしいです! –

7
var firstLink = document.getElementsByTagName('link')[0]; 
firstLink.parentNode.removeChild(firstLink) 

これはページの最初のリンク要素を削除します.HTMLの構造がわからないのですが、例として使用できると確信しています。 'text/css'で、適切なメディア(画面)をターゲットにしている場合はtype属性をチェックしたり、CSSリファレンスではない他のリンク要素がある場合はhrefに 'css'が含まれているかどうかを確認することができます。

また、要素を完全に削除する代わりに、存在しないページを指すようにhref属性を再設定することもできます。

+0

は、それがより良い使用していないですリンクタグのIDですか? – rahul

+0

id属性がlink要素に設定されているのは珍しいことですが、私は、OPがおそらく望むこの正確な目的のために、構文解析が少なく、複数のリンク要素を扱っていると確信しています。 –

+0

+1 ..私の前に投稿され、正しい印を付ける必要があります。 – Xinus

24

を無効にし、これは動作します:明らかに

$("link[href='fileToRemove.css']").remove(); 

、アンロードするファイルの相対パスとファイル名をfileToRemove.cssを交換してください。

+7

ファイル名を引用符で囲む必要がありました。 $( "link [href = 'test.css']")。remove(); – guido

+6

パスを入れたくない場合は、等号の前に*を付けることができます。 $( "link [href * = 'fileToRemove.css']")。remove(); – Dubbo

1

奇妙なことに、IEとfirefoxは無効な属性をサポートしていますが、Chrome、Safari、Operaはサポートしていません。したがって、これは最も多くのクロスブラウザでなければなりません。

// disables all styles in the document 
function unload_stylesheet(DOMelement){ 
    DOMelement.disabled = true; 
    DOMelement.parentNode.removeChild(DOMelement); 
} 
// usage 
unload_stylesheet(document.getElementsByTagName('link')[0]); 
関連する問題