Webkitでstyle要素をdisabled=trueにしてもスタイルシートを無効にできない
SafariやGoogle Chromeで、style要素をdisabled=trueにしても、そのstyle要素のスタイルシートを無効にできない。
document.getElementsByTagName('style').item(0).disabled = true;
一方link要素で読み込んだ外部スタイルシートは、そのlink要素をdisabled=trueにすることで無効にできた。
解決策が分かるまで、はてなダイアリーで好きなテーマ(デザイン)を適用するブックマークレットはWebkit対応はおあずけ。使えないこともないけれど、ダイアリーによってはぐちゃぐちゃになる。
document.styleSheetsからなら無効化できた。
document.styleSheets.item(2).disabled = true;
でもこれだと文書順でしかスタイルシートを特定できない。
removeChildでも無効化できた。
var s = document.getElementsByTagName('style').item(0); s.parentNode.removeChild(s);
os0x style.sheet.disabled = true;でいけるよ
document.getElementsByTagName('style').item(0).sheet.disabled = true;
確かにWebkitでも無効になりました。
id:os0xさん、ありがとうございます。
最初の方法だとHTMLStyleElementインターフェイスのdisabledプロパティ、今回の方法や
document.styleSheets.item(n).disabled
だとStyleSheetインターフェイスのdisabledプロパティで、前者はWebkitでは効かない、ということなのかな。