浏览器Bookmarklet To Pull&从活动窗口存储所选文本

时间:2010-12-10 11:32:42

标签: javascript bookmarklet

首先,我应该说清楚我不是程序员(只是计算即将开展的项目的细节)。如果有些问题听起来很愚蠢,请放轻松。

基本上,我需要创建一个浏览器书签。这可以拖到用户的状态栏。这就是它应该如何工作:当我在任何特定的网页上时,我可以从页面中选择一些内容并点击书签。执行此操作时,bookmarklet应将所有选定数据保存在我的数据库中。

现在,我想知道的是,如果我还想存储所选文本中的所有格式,超链接等,这是否可行。例如,我在浏览器窗口上选择的网页部分可以包括一些图像,链接,粗体文本和三个段落。我可以通过简单点击书签来捕获所有这些吗?

非常感谢你的帮助。

PS:我试图在这个网站上搜索这些信息,但似乎没有答案可以解决这个具体问题。

1 个答案:

答案 0 :(得分:0)

您可以通过提取选定的HTML来获得一些方法。要获得CSS格式,你需要一些相当繁重的处理,这超出了我的答案范围。您还需要将选定的HTML发送到服务器,您需要使用Ajax。

Ajax部分相当简单。有很多关于如何使用Ajax将值发布到服务器的教程。但是,您需要注意它只能在与您发布的服务器相同的域中的页面上工作,因此这可能会否定这样做作为书签,因为它不能只在任何地方使用在网上。

这是一个在所有主流浏览器中获取当前所选HTML的函数:

function getSelectionHtml() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }
    return html;
}

alert(getSelectionHtml());