如何通过bookmarklet在Firefox新标签页打开about协议类地址
解决方案
问题原因
Firefox出于安全策略限制,存在两类拦截规则导致你遇到的问题:
- 非特权JS上下文(包括bookmarklet的运行环境)没有权限调用
window.open打开about:、config:、chrome:等浏览器内部特权URI,防止恶意脚本篡改浏览器核心配置 config:类特权页面本身会默认拦截外部注入的JS执行,所以即使是可正常打开普通网页的bookmarklet也会失效
可行方案
方案1:原生书签(最稳定,全场景兼容)
完全不需要使用bookmarklet,直接新建普通书签,地址栏填入about:profiles即可:
- 要在当前标签页打开:左键点击书签
- 要在新标签页打开:中键点击书签,或按住Ctrl键的同时左键点击书签
如果需要所有书签默认点击都在新标签页打开,可以在about:config页修改配置项browser.tabs.loadBookmarksInTabs的值为true,后续点击任意书签都会自动在新标签页加载,无需按组合键。
方案2:兼容非特权页面的Bookmarklet实现
如果仅需要在普通网页(非config:/about:特权页)下点击书签自动开新标签打开about:profiles,可以用创建a标签触发点击的逻辑替代window.open,代码如下:
javascript:(function(){let a=document.createElement('a');a.href='about:profiles';a.target='_blank';document.body.appendChild(a);a.click();a.remove();})()
将上述代码作为书签地址即可,该方法规避了window.open的特权URI调用限制,但在特权页面下仍会因为JS被拦截失效。
内容的提问来源于stack exchange,提问作者Albin
相关产品推荐
相关产品推荐

