トップ «前の日記(2010-02-24) 最新 次の日記(2010-03-01)» 編集

Ussy Diary


2010-02-28

[Firefox]SBM カウンタのフィルター設定

SBM カウンタを利用させてもらっているのですが、 URL に about ですとか、 http といった文字列が含まれているとブックマーク数を取得しに行かない問題を認識していました。少しだけ時間を取ってコードをみてみたりしたのですが、フィルター設定の初期設定値が問題のようです。

about:*

が問題で about: の : が 0 以上繰り返すものと正規表現で判断し、 URL に about が含まれていればフィルタが効いてしまう状態でした。

^about:.*

と変えてあげることで about が URL 文字列に含まれていてもリクエストしてくれるようになりました。他のフィルタも同じ形に修正しました。

今は HTTPS アクセスはデフォルトで遮断してくれていますが、例えば MDC が https だけ許容していたりしているので、例外的な設定もあると嬉しいなあと思います。 MDC が http も受け付けてくれると嬉しいのですが、その場合ブックマークがばらばらになってしまう問題もあるので難しいところです。

あと ^https?://.*\.自社ドメイン/.* みたいなものを入れておかないと、自社サーバーにアクセスしたときにも URL を通知してしまうので、こういった拡張をつかうときは機密情報が漏れないようにしておくことが大事だと思います。

[Firefox][KeySnail]KeySnail から SBM カウンタを操作する

書いていて SBM カウンタを操作する KeySnail のキー割り当てを思い出したので、貼っておきます。元々 Minibuffer でやっていたものを移植したものです。マウスを右下に持って行くことなくコメントをさらっとみることができます。

key.setGlobalKey(['C-c', 'c'], function (ev, arg) {
    var document = window.content.document;
    var comments = document.getElementById("SBMCounterComments");
    var tab = document.getElementById("SBMCounterCommentsTab");
    var area = document.getElementById("SBMCounterCommentsArea");
    if (! (comments && tab && area)) {
        return;
    }
    var visible = !(tab.style.display == "block");
    comments.style.width = visible ? "auto" : "30px";
    comments.style.height = visible ? "auto" : "30px";
    tab.style.display = visible ? "block" : "none";
    area.style.display = visible ? "block" : "none";
}, 'SBM カウンタコメント開閉');
key.setGlobalKey(['C-c', 'n'], function (ev, arg) {
    var document = window.content.document;
    var comments = document.getElementById("SBMCounterComments");
    var tab = document.getElementById("SBMCounterCommentsTab");
    var area = document.getElementById("SBMCounterCommentsArea");
    if (! (comments && tab && area)) {
        return;
    }
    var visible = tab.style.display == "block";
    if (!visible) {
        return;
    }
    area.scrollTop = area.scrollTop + area.clientHeight / 4;
}, 'SBM カウンタ下へスクロール');
key.setGlobalKey(['C-c', 'p'], function (ev, arg) {
    var document = window.content.document;
    var comments = document.getElementById("SBMCounterComments");
    var tab = document.getElementById("SBMCounterCommentsTab");
    var area = document.getElementById("SBMCounterCommentsArea");
    if (! (comments && tab && area)) {
        return;
    }
    var visible = tab.style.display == "block";
    if (!visible) {
        return;
    }
    area.scrollTop = area.scrollTop - area.clientHeight / 4;
}, 'SBM カウンタ上へスクロール');