Home > スポンサー広告 > ログインしていない時のはてなのピンの処理

スポンサーサイト

スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://karafuto50.blog117.fc2.com/tb.php/140-a54da780
Listed below are links to weblogs that reference
スポンサーサイト from Karafuto Blog

Home > スポンサー広告 > ログインしていない時のはてなのピンの処理

Home > user javascript > ログインしていない時のはてなのピンの処理

ログインしていない時のはてなのピンの処理

user javascript

はてなブックマークにログインしていると、一度ピンをたてておけば別のページに移動した後、あるいはブラウザを閉じて後日にでも、ピンを立てたエントリーを閲覧することが可能なわけだが、当然ログインしていないとページを移動した時立てたピンを失ってしまう。

もちろんページを移動する前に立てたピンをまとめて開けばすむことだが、うっかりミスすることもあるのでそれを防ぐために、 Opera User JavaScriptでページから移動した時に立てたピンを自動的に開くようにしてみようと思った。

Karafuto Blog Operaの unloadイベント で書いたようにページを移動する時は unloadイベントが発動されるからいいが、ページを閉じる、更新、履歴の移動はイベントが発動されない。 仕方がないのでページを閉じるショートカットCtrl+wに限定して対応したので、かなり使える幅の狭いものになってしまった。

スクリプトの流れ

  1. 開くピンの数(userjs_openpinnumber)を設定
  2. ページを移動した時 4.以下を実行
  3. ctrl+wを押した時ページを閉じる。window.close()で閉じるため 4.以下が実行される
  4. 立てたピンの数が開くピンの数(userjs_openpinnumber)以下ならば、ピンをまとめて開く
  5. 立てたピンの数が開くピンの数より多ければ、立てたピンのリンクのリストを別ウィンドウに表示する(ただし表示する立てたピンのリンクは100までにしておいた)

Operaのポップアップの設定を「ポップアップをバックグラウンドで開く」または「すべてのポップアップを有効にする」にしておく。ポップアップの設定は、サイト設定の編集>一般設定または設定>一般設定から行う。

// ==UserScript==
// @include http://b.hatena.ne.jp/*
// ==/UserScript==


// 開くピンの数の設定
window.opera.addEventListener('BeforeScript', function (e){
    userjs_openpinnumber = 10;
    var src = e.element.getAttribute('src');
    if ( src && src.match(/pin\.js$/) ) {
        var text = e.element.text;
        text = text.replace(/num = num \|\| this\.numOpenAtOnce \|\| 5;/, "num = num || this.numOpenAtOnce || " + userjs_openpinnumber + ";");
        e.element.text = text;
    }
}, false);


document.addEventListener('load', function (){

    if (!Hatena.id){
        document.addEventListener('unload', function (){
            openPin_logout();
        }, false);
        Bookmark.keybind.add('ctrl-w', function (){
            window.close();
        });
    }

    // 立てたピンを処理する関数
    function openPin_logout(){
        if (Bookmark.pin.items.length) {
            if ( Bookmark.pin.items.length < userjs_openpinnumber + 1){
                Bookmark.openPinned();
            } else {
            var content = '<ul>';
            Bookmark.pin.items.slice(0, 100).each(function (e){
                content += '<li><a href="' + e.url + '" target="_blank">' + e.title + '</a></li>'
            });
            content += ('</ul>');
            var newWindow = window.open();
            newWindow.document.write(content);
            }
        }
    }   

}, false);

hateb_openpin_unload_logout.js

開くピンの数の変数 userjs_openpinnumberはグローバル変数でグローバルな名前空間を汚している。userjs_openpinnumberは開くピンの数を取得したいので設定している。

上のほうにも書いたが、ページ移動とctrl+wにしかスクリプトは反応しない。特にページを閉じる方法はたくさんあって(マウスジェスチャー、メニュー、タブをマウスホイールでクリック、全てのタブを閉じる、その他)、ミスを防ぐという意図を果たせていないような。

書いといて言うのはなんだが、結論としてはてなブックマークはログインして使えということ。そうすればこのスクリプトは要らない。

Comments:0

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://karafuto50.blog117.fc2.com/tb.php/140-a54da780
Listed below are links to weblogs that reference
ログインしていない時のはてなのピンの処理 from Karafuto Blog

Home > user javascript > ログインしていない時のはてなのピンの処理

おまかせリンク(R)
全記事表示リンク
Search
Meta
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。