在书签中使用本地存储

2024-05-07

我非常喜欢使用带有小脚本的书签。

例如,我编辑了注释编辑脚本这个帖子 http://www.reddit.com/r/LifeProTips/comments/265rxe/lpt_use_a_browser_tab_as_a_quick_and_simple/在 Reddit 上通过本地存储自动保存和加载最后一条笔记。

...

window.addEventListener("load", function () {
    div.innerHTML = localStorage.getItem("note");
}, false);
document.body.addEventListener("keyup", debounce(function () {
     localStorage.setItem("note", div.innerHTML);
}, 760));
...

如果我将 html 文档作为存储在硬盘上的实际 html 文档打开,它运行得很好。但是当我使用 URL 栏粘贴到我的代码的(缩小)版本中运行它时data: text/html, ...,我得到一个NS_ERROR_NOT_AVAILABLE:错误。这是有道理的,因为本地存储是域绑定的。

有没有办法让本地存储与书签一起使用?

完整的注释代码可以在这里找到 https://gist.github.com/Azeirah/6759ee635df3b113b0c1,注意这段代码will如果将其保存在本地硬盘上,则可以使用。因此,您可以为其添加书签并根据需要使用它。


正如您在问题中所描述的,本地存储属于网络起源。在您的浏览器中,书签数据:URI 的来源为“null”。这意味着浏览器每次加载时都会将 data: 页面视为从唯一的来源提供服务。即使这样的源可以有 localStorage,也无法返回源来访问那里的数据。

小书签在当前页面的原点运行脚本。这个问题使得某些事情(比如你的任务)变得非常困难。在另一个示例中,提供小书签的密码管理器需要小心——它们在当前页面的安全沙箱中运行代码。他们的代码中的小缺陷很容易将敏感键暴露给当前打开的页面。

如果您确定让书签指向 data: URI,当前的答案是否定的。

附录:除了获取域名之外,还有其他方法可以获取来源。 Google Chrome 中的扩展程序有自己的起源,它们可以完全从您的本地计算机运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在书签中使用本地存储 的相关文章

随机推荐