我有一个需要打开新窗口/标签的书签.为了避免弹出窗口阻止程序,我需要直接在bookmarklet中调用window.open()方法,即:在浏览器级别.
但是,我想通过加载外部Javascript文件来保持书签可更新.为此,小书签需要将脚本节点附加到DOM.如果我将window.open()代码放在其中一个外部加载的脚本中,弹出窗口阻止程序将阻止它自页面级别.
我想知道的是,如果我可以在我的bookmarklet中围绕window.open()创建一个包装器函数,然后从外部加载的脚本中调用它?什么是范围以及对此包装的权限是什么?
解决方法:
我提出了一个不完美但符合要求的解决方案:
这是bookmarklet代码:
javascript:window.open(window.location);window.location="http://www.google.com/";var%20s=document.createElement('script');s.setAttribute('src','http://my-script.js');document.body.appendChild(s);void(0);
可读的逐步等效是:
window.open(window.location); // Clone the current tab
window.location = "http://www.google.com/"; // Navigate to the desired page url
var s = document.createElement('script'); // Create the script
s.setAttribute('src','http://my-script.js'); //
document.body.appendChild(s); // Embed it into current document
只剩下一个问题:默认情况下,您要显示的页面不活动.克隆的是.