栗の皮むきは難しい @ ArtSaltのサイドストーリーにコメントしたら、「<br>の連打をuser CSSで無効にする」関連の返しがあり、しばらく考えてみたがuserCSSでの解法は思いつかなかったので、user.jsで強引に解決。
// ==UserScript==
// ==/UserScript==
(function(){
window.addEventListener('load',function(){
var re = /<br\s*\/?>[\s\n]*<br\s*\/?>[\s\n]*<br\s*\/?>/i;
var all = document.body.innerHTML;
while(re.test(all)){
all = all.replace(re, "<br /><br />");
}
document.body.innerHTML = all;
},false
);})();
してみたけど、このやり方だと元々あったイベントが全部死んじゃうんだな。強引過ぎだ。もうちょっと考えてみる。
追記
考えてみた。さっきのはチャイで。
// ==UserScript==
// ==/UserScript==
(function(){
window.addEventListener('DOMContentLoaded',function(){
var x = document.evaluate('//', document, null, 7, null);
var l = x.snapshotLength;
for(i = 0;i l;i++){
if('BR' == x.snapshotItem(i).tagName){
if('BR' == x.snapshotItem(i+1).tagName){
if('BR' == x.snapshotItem(i+2).tagName){
x.snapshotItem(i).setAttribute('style','display:none;');
}
}
}
}
},false
);})();
これでどうだろう。これはこれで強引じゃねーか?ほっといてくれ。
また追記
ちょくちょく某所からアクセスが来るので、改訂版。
// ==UserScript==
// ==/UserScript==
(function(){
var getNext = function(node) {
var n = node.nextSibling;
if (! n) return false;
if (n.nodeType == 3 && n.nodeValue.match(/^\s*$/)) {
n = node.nextSibling.nextSibling;
}
return n;
}
window.addEventListener('DOMContentLoaded',function(){
var brs = document.querySelectorAll('br');
var last = brs.length - 2;
var n1, n2;
for(i = 0; i < last; i++){
n1 = getNext(brs[i]);
if (! n1) {break;}
n2 = getNext(n1);
if (! n2) {break;}
if('BR' == n1.nodeName && 'BR' == n2.nodeName) {
brs[i].style.display = 'none';
}
}
},false
);})();