除了URL之外,如何获取此“共享”按钮以获取当前的URL HTML标题?

时间:2009-06-25 13:57:18

标签: javascript button onclick bookmarklet share

我是一个javascript新手,试图建立一个基本的共享按钮作为学习项目。关于一个方面,我有点难过。虽然我可以获取当前页面的URL并将其传递到预填充共享表单的URL中,但我不确定如何获取html标题。

以下是我的目标:

<a href="http://www.domain.com/submit" onclick="window.location = 'http://www.domain.com/submit?url=' + encodeURIComponent(window.location); return false;"> Share This </a> 

我还要在onclick部分添加什么来获取当前页面的标题?无论它是什么,都会在URL中作为“title =”传递。

奖励:我可以添加一些东西来发送当前页面中的一些突出显示的文本吗?这将在URL中作为“body =”

所以我想填写这些空白:

<a href="http://www.domain.com/submit" onclick="window.location = 'http://www.domain.com/submit?url=' + encodeURIComponent(window.location); return false; + 'title=' + SOMETHING + 'body=' + SOMETHING'"> Share This </a>

至少我是这么认为的。我不是百分百肯定我已经把+和's'放在了正确的位置。

2 个答案:

答案 0 :(得分:2)

我想你想要document.title。获取所选文本有点复杂,特别是如果您想支持IE。 DOM标准是window.getSelection但是对于IE,你必须使用ranges - 我没有检查IE8中的内容是否有所改进。

另外我想问一下,分享按钮在哪里?如果它在页面中,则单击该按钮将取消选择所选文本。

答案 1 :(得分:0)

有多种方法可以获取所选文本,不同的浏览器实现不同的文本:

首先,有document.getSelection(),它将所选文本作为字符串返回。然后,有window.getSelection(),它将返回一个选择对象。要获取原始文本,请使用其toString()方法。获取文本的IE方式使用范围,即document.selection.createRange().text

我建议使用包装函数使document.getSelection()适用于支持上述任何方法的所有浏览器:

if(typeof document.getSelection === 'undefined') {
    document.getSelection =
        window.getSelection ? function() {
            return window.getSelection().toString();
        } :
        document.selection ? function() {
            return document.selection.createRange().text;
        } :
        null;
}

作为旁注:您应该设置location.href(而不是location)来更改文档的地址。