0

我正在制作一个具有两种模式的 chrome 扩展,每当单击该图标时,都会出现一条弹出消息,向用户解释他所处的模式。

问题是消息并不总是显示(弹出窗口本身被打开)。

我试着用谷歌搜索它,但似乎没有很多人遇到这个问题。

有人可以帮忙吗?

这是我的代码:

function openWin1()
{
    myWindow=window.open('','','width=500,height=500,toolbar=0, location=0, status=0, menubar=0, scrollbars=0, resizable=0');
    myWindow.moveTo(500,100);
    myWindow.document.write("<p>mode1</p>");
    myWindow.focus();
}

function openWin2()
{
    myWindow=window.open('','','width=500,height=500,toolbar=0, location=0, status=0, menubar=0, scrollbars=0, resizable=0');
    myWindow.moveTo(500,100);
    myWindow.document.write("<p>mode2</p>");
    myWindow.focus();

}


chrome.browserAction.onClicked.addListener(onClickExtensionIcon);
function onClickExtensionIcon(tab) 
{
    if(hasAPrise)
    {
        hasAPrise = false;
        chrome.browserAction.setIcon({path: '/icon.png'});
        openWin1(); //open the first popup
    }
    else
    {
        openWin2(); //open the second popup
    }


}

提前致谢

编辑:我注意到,如果我最大化和最小化弹出窗口几次,消息就会出现。此外,当我检查弹出源时,它的消息是正确的。这是有趣的。任何想法如何解决这一问题。

4

1 回答 1

1

您必须在写入文件后关闭它:

myWindow.document.write("<p>mode2</p>");
myWindow.document.close();

更新:命名您的目标也可能很有用,这样您就不会在每次单击链接时产生一个新窗口,并且可能将您的内容包装在 html 中。

function openWin1(){
    myWindow=window.open('','popup1','width=500,height=500,toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0');
    myWindow.moveTo(500,100);
    myWindow.document.write("<html><head><title>Popup1</title></head><body>I am popup 1</body></html>");
    myWindow.document.close();
    myWindow.focus();
    myWindow.resizeTo(499,499); //UPDATE: force resize because OP is getting improved results after window resize
}

我无法将其作为实际的 Chrome 扩展程序进行测试,但我制作了一个 JSFiddle,显示它作为 html/js 工作

于 2013-10-16T12:12:40.430 回答