javascript – 可以从页面级脚本调用在书签中定义的函数吗?

我有一个需要打开新窗口/标签的书签.为了避免弹出窗口阻止程序,我需要直接在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

只剩下一个问题:默认情况下,您要显示的页面不活动.克隆的是.

上一篇:Python3 练习笔记六


下一篇:用于显示弹出网格的Javascript公式