0

所以我被要求在每次用户加载页面时生成一个新窗口的地方。所以我在标签中创建了以下代码......

<SCRIPT TYPE="text/javascript">
            function popup(mylink, windowname) {
                if (! window.focus) return true;

                var href;

                if (typeof(mylink) == 'string') {
                    href = mylink;
                } else {
                    href = mylink.href;
                    window.open(href, windowname, 'width=400,height=200');
                }

                return false;
            }
        </SCRIPT>

和 onLoad 函数在页面加载时创建弹出窗口

<body onLoad="popup('http://yahoo.com', 'ad')">

然而,什么也没有发生。不创建tab,不创建新窗口,通过firebug查看也没有报错。在 chrome、firefox 和 IE9 上进行了尝试,结果相同,没有一个浏览器抱怨他们阻止了弹出窗口。我在这里错过了一些非常简单的东西吗?

4

1 回答 1

3

Ifmylink是一个字符串(在您的示例中它是),您永远不会调用window.open

if (typeof(mylink) == 'string') {
    // Code takes this path
    href = mylink;
} else {
    // Not this one
    href = mylink.href;
    window.open(href, windowname, 'width=400,height=200');
}

话虽如此:如果您解决了这个问题,您将从弹出窗口阻止程序中收到警告/错误。浏览器会阻止网站打开弹出窗口,除非是直接响应用户操作,例如点击。网站在页面加载时打开弹出窗口是原因之一。


旁注:typeof是一个运算符,而不是一个函数。操作数周围不需要括号。

于 2013-10-09T16:47:36.630 回答