Javascript 用于保存研究引文的Bookmarklet

Javascript 用于保存研究引文的Bookmarklet,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在尝试构建一个浏览器书签,让用户保存一个引用(文本块),按下书签,将保存引用,以及一个时间戳和web应用程序中他们的个人资料的URL 您可以看到我在下面编写的代码,但是遇到了一些问题 很好地包装代码以在bookmarklet中工作 显然,使用$post可能会很麻烦,因为有些页面需要bookmarklet添加它 关于如何进行有什么想法吗 你可以看到我现在在这里 (函数(){ 函数getSelectionHtml(){ var html=“”; if(typeof window.getSelec

我正在尝试构建一个浏览器书签,让用户保存一个引用(文本块),按下书签,将保存引用,以及一个时间戳和web应用程序中他们的个人资料的URL

您可以看到我在下面编写的代码,但是遇到了一些问题

  • 很好地包装代码以在bookmarklet中工作

  • 显然,使用$post可能会很麻烦,因为有些页面需要bookmarklet添加它

  • 关于如何进行有什么想法吗

    你可以看到我现在在这里

    (函数(){
    函数getSelectionHtml(){
    var html=“”;
    if(typeof window.getSelection!=“未定义”){
    var sel=window.getSelection();
    如果(选择范围计数){
    var container=document.createElement(“div”);
    对于(变量i=0,len=sel.rangeCount;i
    1) 很好地包装代码以在bookmarklet中工作

    bookmarklet就是使用
    JavaScript:
    pseudo协议将JavaScript代码编码到URL中的代码。有几个网站和工具可以将代码转换成bookmarklet。最基本的是使其在代码运行时发生您想做的事情。您的代码目前定义了两个函数,但不调用它们中的任何一个。您希望调用相关的。通常,最好将bookmarklet代码包装在作用域函数中,这样您就不会添加到页面的全局命名空间中(因为可能会发生冲突):

    一些bookmarklet制作者可能有一个选项可以帮你做这件事,但自己做是微不足道的

    2) 显然,跨浏览器使用$post可能不起作用


    这在跨浏览器中可以很好地工作,但在没有加载jQuery的页面中不起作用,而将jQuery加载到页面中可能会有些过火。我会直接使用
    XMLHttpRequest

    “显然,跨浏览器使用$post可能不起作用。”它在跨浏览器时可以正常工作,但在没有加载jQuery的页面上无法正常工作,而bookmarklet将jQuery添加到页面中只是为了实现这一点,这将是一项非常繁重的任务。啊,很抱歉,你说得很对。因此,如果jQuery尚未加载,我只需要将其包括在内?还有些不确定如何在应用程序中使用这两个函数bookmarklet。我应该打包成一个吗?@user:我不会将jQuery加载到一个没有加载的页面中,不。似乎
    google chrome扩展名
    jQuery
    标记是非常不相关的。没错,很抱歉打扰你,但是我不应该在单击bookmarklet/script加载时调用这些函数吗?@user2656127:是的。Al只有在触发bookmarklet时,才会运行所有代码。在触发bookmarklet之前,所有代码都不会运行。@user2656127:如果要添加到问题中,请编辑问题并将代码添加到问题中。@user2656127:如果要添加到问题中,请将代码添加到问题中。非站点链接是可选的附加项,而不是替代项.
       (function() {
        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;
    }
    
    function saveToBiblio() {
    
        var url = window.location;
        var dateSaved = new Date();
        var selectedText = getSelectionHtml();
    
        console.log(url + dateSaved + selectedText);
    
        /*
        do the $post here
        */
    }
    )();
    
    (function() {
        // Your code here
    )();