読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

XBLとuserContent.cssとGreasemonkey

追記:コメントでbindToUntrustedContent="true"が必要になったと指摘をうけたので追加 2015/3/21
userContent.css

@-moz-document domain("reader.livedoor.com") {
  #right_body > .item {
    -moz-binding: url("ldr.xml#filter") !important;
  }
}

と書いて、同じchromeディレクトリに、ldr.xmlという名前で

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl">
<binding id="filter" bindToUntrustedContent="true">
<implementation><constructor><![CDATA[
if (/^[\s【]*(AD|PR|AD|PR)[\s】]*[::]/i.test(this.getElementsByTagName('h2').item(0).textContent)) {
  this.parentNode.removeChild(this);
}
]]></constructor></implementation>
</binding>
</bindings>

と書いて保存すると、livedoor Reader上でbindingが実行されて、広告エントリが自動削除される。
ということで、Firefoxでは拡張を入れなくてもGreasemonkeyみたいなことができる。
セレクタによってはDOMContentLoadedより先に実行されることがあるので、高速。
あと、DOMContentLoaded時に実行したい場合は、

:root {
  -moz-binding: url("binding.xml#exec") !important;
}
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl">
<binding id="exec" bindToUntrustedContent="true">
<implementation><constructor><![CDATA[
document.addEventListener('DOMContentLoaded', function (e) {
 // do something
}, false);
]]></constructor></implementation>
</binding>
</bindings>

こんな感じにするといいかも。