如何制作一个将所选文本转换为链接的书签?

发布于 2024-10-01 05:08:05 字数 114 浏览 3 评论 0原文

假设您

  1. 在浏览器中选择“某些文本”。
  2. 单击书签,
  3. 所选文本将变成带有当前页面 URL 的简单链接。

我应该如何实施这个?

Let's say you

  1. select "some text" an browser.
  2. Click a bookmarklet
  3. the selected text turns into simple link with the url of the current page.

How should I implement this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一杯敬自由 2024-10-08 05:08:05

在 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

Sample code tested in Firefox 3.6, Chome 6 and Opera 10.6 which does exactly what you described in your question.

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);
    }
)()

If you need it to be compatible with IE read this post:
http://www.daniweb.com/forums/thread85642.html

软糖 2024-10-08 05:08:05

以下内容与 @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);
    }
})();

The following is very similar to @wojtiku's answer but adds IE support and a few extra checks and improvements:

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);
    }
})();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文