通过Javascript Bookmarklet保留浏览器历史记录

时间:2010-12-04 14:45:51

标签: javascript ajax bookmarklet browser-history

我正在制作一个书签,当你点击它时会建议链接。我想在点击其中一个链接后,当有人点击后退按钮时,目的是返回到书签建议的链接列表。

但是,我认为没有办法使用可以在任何网页上运行的书签来实现这一点。当您单击建议的链接然后返回时,将显示原始页面,而不显示书签中的任何Javascript,这通常会在页面顶部显示链接列表。

当然,用户只需再次点击书签,但如果不需要,那就太好了。有没有办法做到这一点,没有通过我主办的网站重定向(这是一个可怕的解决方案IMO)?

4 个答案:

答案 0 :(得分:2)

如何将一些html组成一个字符串的bookmarklet,然后使用window.locationdocument.write()的组合来显示它?

var links = "<html><head><title>Suggested links</title></head><body>";
links += "<p><a href='http://example.com/'>Example Suggested Link</a></p>";
links += "</body></html>";
window.location = 'javascript:document.write("' + links + '");' ;

你必须小心引用,以确保显示正确的字符串,但经过快速测试后,似乎尊重后退按钮......

以下是一个示例:http://jsbin.com/ebuko4 - 它在Firefox中适用于我,但我还没有在其他地方测试过它......

代码是:

<html>
  <head>
    <title>JS Bin Sample bookmarklet</title>
  </head>
  <body>
    <p><a href='javascript:(function(){ var l = "<html><head><title>Does this bookmarklet work?</title></head><body><p>"+ "<a href=\"http://example.com/\">Suggested link: Example.com</a></p>" + "<p><a href=\"http://example.net/\">Suggested link: Example.net</a></p>" + "</bo" + "dy></html>"; window.location = "javascript:document.write(%27" + l + "%27);"; })()'>Sample Bookmarklet - drag me to your toolbar</a></p>
  </body>
</html>

答案 1 :(得分:1)

不,我不相信有任何办法可以做到这一点 - 据我所知,无法在页面加载时自动触发bookmarklet javascript - 用户必须单击才能执行。

如果您坚持使用此功能,则需要开发浏览器扩展程序。例如,这将允许您向浏览器窗口添加新的持久帧,您可以在其中显示建议的链接。 Mozilla / Firefox非常简单,因为它是基于所有javascript和XUL(Mozilla的GUI标记语言)。这里有很多教程和文档:https://developer.mozilla.org/en/extensions

你也可以为IE开发扩展,虽然我没有这方面的经验。这个问题How do you develop a plugin for IE?的答案可能会帮助您入门。

编辑:我想到了一种可能的解决方法:您的书签可以在当前窗口中创建一个新页面,其中包含容器中的建议链接,以及在iframe中呈现的原始页面。点击任何建议的链接都会更新iframe。没有实际尝试它,不确定这可能会产生什么实际问题(例如某些网站 - 如SO - 将不会在iframe中呈现,而某些链接将具有target =“_ blank”并在新窗口中打开),或者是否为此格式对你来说是可取的。

答案 2 :(得分:0)

如果浏览器更改了页面,那么您的书签将失去控制权。因此,一种解决方案不是改变页面。

您可以在框架或iframe中打开建议的链接。只要有一些方法可以再次查看建议链接列表,您可以根据需要使框架填满窗口。

注意这在stackoverflow上不起作用!他们突破了框架grrr。

这是一个有点相关的例子:http://hwi.ath.cx/joeys_bookmarklets.html#splitpreview

答案 3 :(得分:0)

如果您可以在用户关注建议链接之一时向前传送数据(例如,将#info = ...添加到链接的URL),则用户可以通过再次激活书签来恢复链接列表,无需返回浏览器。

如果小书签在工具栏上,那么这将是一次单击操作。但它可能会引发一个新问题:当小书签试图向您显示上一页的结果时如何获得新的结果!