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