Как сделать букмарклет, который превратит выделенный текст в ссылку? - PullRequest
3 голосов
/ 07 ноября 2010

Допустим, вы

  1. выберите "некоторый текст" в браузере.
  2. Нажмите на закладку
  3. выделенный текст превращается в простую ссылку с URL текущей страницы.

Как мне это реализовать?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Пример кода, протестированный в Firefox 3.6, Chome 6 и Opera 10.6, который в точности соответствует тому, что вы описали в своем вопросе.

javascript:(
    function(){
        var range = window.getSelection().getRangeAt(0);
        var a = document.createElement('a');
        a.setAttribute('href',document.location);
        a.appendChild(document.createTextNode(window.getSelection().toString()));
        range.deleteContents();
        range.insertNode(a);
    }
)()

Если вам нужно, чтобы он был совместим с IE, прочитайте этот пост: http://www.daniweb.com/forums/thread85642.html

1 голос
/ 08 ноября 2010

Следующее очень похоже на ответ @ wojtiku, но добавляет поддержку IE и несколько дополнительных проверок и улучшений:

javascript:(function() {
    var sel, range, a;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount) {
            range = sel.getRangeAt(0);
            a = document.createElement("a");
            a.href = window.location.href;
            a.appendChild(document.createTextNode("" + sel));
            range.deleteContents();
            range.insertNode(a);
        }
    } else if (document.selection && document.selection.type == "Text") {
        range = document.selection.createRange();
        a = document.createElement("a");
        a.href = window.location.href;
        a.appendChild(document.createTextNode(range.text));
        range.pasteHTML(a.outerHTML);
    }
})();
...