因此,我被要求在每次用户加载页面时生成新窗口。所以我在标签中创建了以下代码......
<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上尝试了相同的结果,没有一个浏览器抱怨他们已经阻止了一个弹出窗口。我在这里错过了一些非常简单的东西吗?
答案 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。