JavaScriptでトリプルクリックの判別

いつの間にか、ほぼ1ヶ月ぶりの更新。
SBM Comments Viewerの修正をした。


窓の杜 - 【REVIEW】エクスプローラ上で手軽にシンボリックリンクを作成「Link Shell Extension」をインストールし、ハードリンクやジャンクションを使って、DropBoxにバックアップしようと試みていたら、以前に手動でバックアップしていた古いファイルによって現在のファイルが上書きされてしまった。


具体的には、DropBoxフォルダに手動で作成していたフォルダを削除し、バックアップしたいフォルダのジャンクションを削除したのと同じ名前で作成したら、DropBoxサーバー上のファイルの古い方のファイルと同期されてしまったらしい。
そして、ジャンクションフォルダが上書きされると、プロファイルフォルダにある被ジャンクションフォルダのファイルも変更されてしまった。


前にブログで修正したときのことを書いていたので簡単に再修正できたけど、多少変更したのでまた書いておく。SBMCommentsViewerにコメント再取得とコメントを閉じるリンクを追加

230行目あたり
            this.id_count = 'SBMCommentsViewerCountArea';
            this.count = document.createElement('div');
            this.count.setAttribute('id', this.id_count);
            this.count.setAttribute('style', count_css);
            this.count_opacity = this.count.style.opacity;
            this.count.addEventListener("mouseover", function(){
                this.style.opacity = '1.0';
            }, false);
            this.count.addEventListener("mouseout", function(){
                this.style.opacity = comment_area.count_opacity;
            }, false);
            this.div.appendChild(this.count);
//ここから追加
                // close button(自分で追加したもの)
                var a_close = document.createElement('a');
                a_close.setAttribute('href', "javascript:void(0)");
                a_close.setAttribute('style', "position:absolute; right:0px; bottom:0px;");
                a_close.innerHTML = "Close";
                a_close.addEventListener("click", function(){comment_area.hide()}, false);
                this.div.appendChild(a_close);
                // reload button
                var a_reload = document.createElement('a');
                a_reload.setAttribute('href', "javascript:void(0)");
                a_reload.setAttribute('style', "position:absolute; right:70px; bottom:0px;");
                a_reload.innerHTML = "Reload";
                a_reload.addEventListener("click", function(){
                    comment_area.hide();
                    SBMCommentsViewer();
                }, false);
                this.div.appendChild(a_reload);
//ここまで追加
            this.id_mini = 'SBMCommentsViewerMini';

最終行近く
        if (key == BIND_KEY){
            comment_area.toggle();
//ここから追加
        } else if (key == 'CA-b') {
            comment_area.hide();
            SBMCommentsViewer();
//ここまで
        }
    }, false);

やっていることはほぼ同じだけど、クリックでSBM Comments Viewerを表示したときのマウスカーソルの位置にCloseという閉じるリンクが来るようにした。


さらに、標準ではダブルクリックで閉じるようになっていると思うけど、コメント欄にあるURLの文字列をテキストリンクでダブルクリックしたときにも閉じてしまうので、トリプルクリックで閉じるように変更した。

210行目あたり
        CommentArea.prototype.setup = function () {
            if(this.id) return;
            this.id = 'SBMCommentsViewerArea';
            this.div = document.createElement('div');
            this.div.setAttribute('id', this.id);
            this.div.setAttribute('style', comment_area_css + 'display:none;');
//-の行を+に変更
-            this.div.addEventListener("dblclick", function(){comment_area.hide()}, false);
+            this.div.addEventListener("click", function(e){if(e.detail == 3) comment_area.hide()}, false);
            document.body.appendChild(this.div);