ページから現在のスタイルシートを動的に削除する方法はありますか?
たとえば、ページに次が含まれている場合:
<link rel="stylesheet" type="text/css" href="http://..." />
...後でJavaScriptで無効にする方法はありますか? jQueryを使用するための追加のポイント。
JQueryを使用してターゲットにできると仮定すると、要素でremove()
を呼び出すのと同じくらい簡単になります。
$('link[rel=stylesheet]').remove();
これにより、ページ上のall外部スタイルシートが削除されます。 URLの一部がわかっている場合は、探しているURLのみを削除できます。
$('link[rel=stylesheet][href~="foo.com"]').remove();
そしてJavascriptで
これは、クエリセレクターとforeach配列ですべてを削除する例です
Array.prototype.forEach.call(document.querySelectorAll('link[rel=stylesheet]'), function(element){
try{
element.parentNode.removeChild(element);
}catch(err){}
});
//or this is similar
var elements = document.querySelectorAll('link[rel=stylesheet]');
for(var i=0;i<elements.length;i++){
elements[i].parentNode.removeChild(elements[i]);
}
スタイルシートのIDがわかっている場合は、次を使用します。もちろん、スタイルシートを取得する他の方法も同様に機能します。これは単純なDOMであり、ライブラリを使用する必要はありません。
var sheet = document.getElementById(styleSheetId);
sheet.disabled = true;
sheet.parentNode.removeChild(sheet);
Jqueryを使用してスタイルシートを削除する方法を探しているときに、このページを見つけました。次を読んだときに正しい答えを見つけたと思った
URLの一部がわかっている場合は、探しているものだけを削除できます:
$('link[rel=stylesheet][href~="foo.com"]').remove();"
削除したいスタイルシートの名前は同じでしたが、異なるフォルダーにあったため、このソリューションが気に入りました。ただし、このコードは機能しなかったため、演算子を*=
に変更しましたが、完全に機能します。
$('link[rel=stylesheet][href*="mystyle"]').remove();
誰かに役立つ場合に備えて、これを共有すると思いました。
おそらくあまりエレガントではありませんが、猫の皮を剥ぐ方法は複数あります! (または ウサギ 、それがあなたのものでない場合!)
これはjQueryを使用して _document.styleSheets
_ を操作します。
_$.each($.grep(document.styleSheets, function(n) {
return n.href.search(/searchRegex/) != -1;
}), function(i, n) {
n.disabled = true;
});
_
これにより、URLに「searchRegex」を含むスタイルシートが無効になります。 ( str
.search()
および 正規表現 を参照)
これを純粋なJavaScriptに変更するのは簡単です。 $.each()
および $.grep()
を削除して、単純な for-loop を優先します。
_for (var i = 0; i < document.styleSheets.length; i++) {
if (document.styleSheets[i].href.search(/searchRegex/) != -1) {
document.styleSheets[i].disabled = true;
}
}
_
これにより、ページのスタイルがリセットされ、すべてのスタイル要素が削除されます。また、jQueryは必要ありません。
Array.prototype.forEach.call(document.querySelectorAll('style,[rel="stylesheet"],[type="text/css"]'), function(element){
try{
element.parentNode.removeChild(element)
}catch(err){}
});
これはすべてを無効にするためです<style>
からhtml
// this disable all style of the website...
var cant = document.styleSheets.length
for(var i=0;i<cant;i++){
document.styleSheets[i].disabled=true;
}
//this is the same disable all stylesheets
Array.prototype.forEach.call(document.styleSheets, function(element){
try{
element.disabled = true;
}catch(err){}
});
プレーンなJavascriptでIDなしで特定のスタイルシートを削除することについて誰も言及していません。
document.querySelector('link[href$="something.css"]').remove()
( "$ ="はhrefの最後にあります)