添加一个仅为javascript的书签,而不是URL

59

我在考虑我无法做到这一点的原因可能是由于这可能是一个巨大的安全漏洞,但还是试一下吧...

我想在我的浏览器 (最好是FF3) 中有一个书签,它仅是一小段javascript代码。 它将根据当前日期构造一个URL,然后对该URL执行window.location =。

我知道我可以制作一个页面并将其保存在本地机器上,然后只需引用即可,但我只是想知道是否可以跳过这一步,实际上让书签的“位置”只是javascript。 我记得多年前这是可能的,但现在我找不到任何告诉我是否如此的东西。

5个回答

73

你需要的是一个书签小程序,它们很容易创建,并且应该在大多数主流浏览器中都能使用。

编辑:Stack Overflow似乎不允许在网站上创建书签小程序,基本上你可以创建一个新的书签并在位置字段中输入以下内容。

javascript:window.location='http://www.google.com/search?q='+Date()
获取一个可以搜索当前日期的谷歌书签工具。

26

值得注意的是,你也可以将它放在函数包装器中。imranamajeed为我们很好地示范了这一点......但显然我太新了无法给他点赞。:P

因此,为了清晰起见:

javascript:(function(){
  location.href = location.href + "#";
})();

(回车符号不会影响Chrome和IE的性能)


1
是的,将其包装在一个函数中可以防止返回值与当前窗口发生冲突。 - mb21

11

有一个小问题。 IE 只能处理以这种格式为基础的 508 字符 URL。如果您在IE中保存一个超过此长度的URL,则会被截断而没有警告,从而导致失败。

如果您需要一个真正复杂的脚本,您需要使用“托管式”书签小程序,其中您有一个短书签,它将一个脚本标记注入页面,以“调用”您的托管式书签小程序。

虽然这不是很方便/具有可移植性,但这是唯一的解决方法。


6
所以这个的模式大致是这样的: javascript:(function(){document.body.appendChild(document.createElement('script')).src='http://www.yoursite.com/js/bookmarklet.js';})(); - Shermozle
1
你只需要从其他网站加载所需的脚本内容即可。 - scunliffe

10

谷歌书签

javascript:(function(){var%20a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();

8

我刚在FF3中创建了一个书签,然后返回并更新了它,并添加了以下测试:

javascript:alert('Wacky%20test%20yo');

保存并加载后,惊人的发现,我成功地获得了我的警报。

我相信你可以为自己的需求设计出类似的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接