javascript-在书签中使用本地存储
作者:互联网
我非常喜欢在其中使用带有小脚本的书签.
例如,我在Reddit上从this post编辑了便笺编辑脚本,以通过localstorage自动保存和加载最后一个便笺.
...
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栏运行它时,该网址栏粘贴了我的代码的(最小化)版本中的数据:text / html,…,我得到了NS_ERROR_NOT_AVAILABLE:错误.这是有道理的,因为本地存储是域绑定的.
有没有办法使本地存储与书签一起使用?
The full note code is available here,请注意,如果将此代码保存在本地硬盘中,该代码将起作用.因此,您可以为此添加书签并在需要时使用它.
解决方法:
正如您在问题中所描述的,localstorage属于网络起源.在浏览器中,带有书签的数据:URI的来源为“空”.这意味着浏览器每次加载时都会将数据:页面视为是从唯一来源提供的.即使这样的源可以有localStorage,也无法返回源来访问那里的数据.
小书签在当前页面的原始位置运行脚本.这个问题使某些事情(例如您的任务)变得非常困难.在另一个示例中,提供书签的密码管理器需要小心-它们正在当前页面的安全沙箱中运行代码.他们代码中的次要漏洞很容易将敏感键暴露给当前打开的页面.
如果确定书签指向数据:URI,则当前答案为否.
附录:除了获得域名以外,还有其他方法可以拥有起源. Google Chrome浏览器中的扩展程序具有自己的起源,它们可以完全在您的本地计算机上运行.
标签:bookmarklet,html5,javascript 来源: https://codeday.me/bug/20191029/1960653.html