根据我的理解,bookmarklets将使用页面的原点执行,并在其中调用它们。虽然这几乎是它们有用的原因,但它限制了书签保持状态的能力。
具体来说,我想存储书签的配置数据。用例可以是例如允许持久的站点独立定制行为,而无需更改代码。
其他标准包括
一个极端的例子是使用Dropbox等第三方文件托管服务同步内容的书签,这需要安全地存储身份验证密钥。
有没有这种可能性?
配置可以手动放入书签中,例如通过在像github这样的公共服务上托管主javascript,并创建一个代理书签,用#
加载它 - 选项,例如
javascript:function runBmlet(url){ var s=document.createElement("script"); s.src=url; document.head.appendChild(s); }; runBmlet("http://url.of/my/script.js#DropboxData=YOURDATAHERE");
然而,从长远来看,这比将配置存储在类似于localStorage的东西要方便得多。
编辑该解决方案遗憾地根本不起作用;某些网页阻止使用策略script-src 'unsafe-eval' ...
从不受信任的来源加载javascript,并包含javascript文件,例如通过mime类型检查阻止来自Dropbox或Github。