Javascript window.open什么都不做,不会产生错误

时间:2013-10-09 16:46:23

标签: javascript html

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

<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')">

然而,没有任何反应。没有创建选项卡,也没有创建新窗口,并且通过firebug查看时,不会产生错误。在chrome,firefox和IE9上尝试了相同的结果,没有一个浏览器抱怨他们已经阻止了一个弹出窗口。我在这里错过了一些非常简单的东西吗?

1 个答案:

答案 0 :(得分:3)

如果mylink是一个字符串(在您的示例中),则永远不会调用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是一个运算符,而不是一个函数。操作数周围不需要parens。