【发布时间】:2016-03-14 23:38:22
【问题描述】:
我正在制作 Chrome 扩展程序。单击popup.html 中的按钮会打开一个新窗口并加载feedback-panel.html。
这可行,但是,在点击时,我想检查窗口是否已经打开,如果是,则关注它而不是创建一个新窗口。
JavaScript window.open only if the window does not already exist 看起来很有希望,但它依赖于在打开窗口时将打开的窗口作为变量存储在父页面上,并在打开新窗口之前检查这些窗口。这对我不起作用,因为父窗口 (popup.html) 经常会自行关闭并重新打开,我会丢失变量。
我尝试实现相同的想法,但使用chrome.storage 存储窗口变量,因为它允许您存储对象。好吧,它确实允许您存储对象,但它首先将它们序列化,因此 window 变量失去了它的所有功能,我最终得到了
result.feedbackPanel.focus() 不是函数
这是我的尝试:
function openFeedbackPanel(){
chrome.storage.local.get('feedbackPanel', function (result) {
console.log( result.feedbackPanel); // logs window object sans all functions
if(result.feedbackPanel && ! result.feedbackPanel.closed){
try{
result.feedbackPanel.focus();
}
catch(error){
chrome.storage.local.remove('feedbackPanel', function () {
});
createFeedbackPanel();
}
}
else{
createFeedbackPanel();
}
});
}
function createFeedbackPanel(){
var win = window.open('feedback-panel.html', 'Feedback', 'width=935, height=675');
console.log(win); // logs full object as expected
chrome.storage.local.set({"feedbackPanel": win});
}
$('#some-button').click(openFeedbackPanel());
所以,因为这不起作用:
如何检查弹出窗口是否已从非父窗口(未打开弹出窗口的窗口)打开?
【问题讨论】:
标签: javascript jquery google-chrome google-chrome-extension window