行間を広げるブックマークレットがあるページで動かなくて

使っていたのは以下のもの。

javascript:(function(){
    var e = document.body.getElementsByTagName('*');
    for(var i=0,l=e.length; i<l; i++)
        e.item(i).style.lineHeight='1.8';
})();

よくあるタイプだと思う。でもこれだとbody直下にテキストべた書きなページで作用しない。なのでbody要素にもスタイルを設定するコードを追加。

document.body.style.lineHeight='1.8';

でもこれでも動かないページがあった。フレームを使ったページ。どうすれば良いか思いつかなかったので検索した。
するとスタイルを追加 - ブックマークレット - Static Flowerで生成したものがフレームを使ったページでも作用した。しかも前述のものよりも高速に作用する。以下は整形したもの。

javascript:(function(){
    (function f(w){
        var o,i=0;
        while(o=w.frames[i++])
            try{
                f(o)
            } catch(e) {}
        w.document.getElementsByTagName('HEAD')[0].appendChild(w.document.createElement('STYLE')).innerHTML='*{line-height: 1.8 !important;}'
    })(window)
})()
  • フレームはframesで。
  • 多数の要素のスタイルをいじるなら、STYLE要素を追加した方が速い。

あれ、でもなんでtryが要るんだろう。