IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Safari や Google Chrome でもはてなスターで選択範囲を引用できるようにする Bookmarklet

今まで

Google Chrome ではてスタしても、選択範囲の引用ができなかった><

というわけで

ブックマークレット作った。
以下のブックマークレットを実行してから、テキストを選択して、はてスタすると引用できるようになる。

javascript:window._gs = window.getSelection; document.onselectstart = document.ondblclick = function() { window._s = _gs()+'' }; window.getSelection = function() { return window._s || '' }; void(0);

この方法だと、 getSelection を上書きしてるので、グリモン的に自動読み込みでやるのはお勧めしない。
もし、 HatenaStar.js を直すとしたら。 以下、

    // ハンドラーを定義
    handleSelection: function() {
        Ten.DOM._selectedText = getSelection()+'';
    },

    getSelectedText: function() {

        // WebKit 用の判定追加
        if (navigator.userAgent.match(/AppleWebKit/))
            return (Ten.DOM._selectedText || '');


        else if (window.getSelection)
            return '' + (window.getSelection() || '');
        else if (document.getSelection)
            return document.getSelection();
        else if (document.selection)
            return document.selection.createRange().text;
        else
            return '';
    },

:
:

    // 以下のようにイベント追加
    if (navigator.userAgent.match(/AppleWebKit/)) {
        new Ten.Observer(document, 'onselectstart', Ten.DOM, 'handleSelection');
        new Ten.Observer(document, 'ondblclick', Ten.DOM, 'handleSelection');
    }

って感じ。

(追記)

id:jkondo 「したい」

はてなアイデア

やった!