我有一个chrome扩展,使用window.open打开一个窗口,它位于background.js以外的test.js文件中 我无法使用 chrome.windows.create(); 直接在test.js中的方法,因为它触发错误“Uncaught TypeError:无法调用方法'创建'未定义” 所以我用 window.open( 'mysite.com'); chrome浏览器不允许打开弹出窗口。它说弹出窗口被阻止了。用户必须允许该站点的弹出窗口。 是否有任何方式通过代码,我可以允许弹出特定网站? 要么 我可以用任何方式使用chrome.windows.create();在除background.js以外的任何js文件中?
答案 0 :(得分:0)
您不能以编程方式允许弹出窗口(afaik),但您可以(间接)使用 chrome.windows.create()
。
由于 chrome.windows
仅在后台页面中提供,因此您需要使用 Message Passing ,以便在内容之间进行通信 - 脚本和背景页面:
在 content-script :
/* Instead of `window.open(someURL);` */
chrome.runtime.sendMessage({
action: openWindow,
url: someURL
});
在背景页面:
/* Listen for and respond to messages from content-scripts */
chrome.runtime.onMessage.addListener(function(msg, sender) {
if ((msg.action === 'openWindow') && (msg.url !== undefined)) {
chrome.windows.create({ url: msg.url });
}
});
(当然,除了URL之外,您还可以指定其他参数。)