有人能看到我的代码有什么问题吗?它在IE中运行正常,但firefox 6似乎忽略了我传递给javascript window.open调用的任何高度或宽度设置。我看不出任何明显的错误,但javascript不是我的第一语言,所以我可能会在某处发生noob错误。
此功能的目的是打开一个以屏幕为中心的800x600窗口,并在IE和Mozilla系列浏览器中以模态方式显示。
<html>
<head>
<script language="javascript" type="text/javascript">
function openWindow(pageURL,Title,w,h)
{
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
if (window.showModalDialog) {
window.showModalDialog(pageURL,Title,'dialogWidth:' + w + 'px,dialogHeight:'+ h + 'px,dialogTop:'+ top + 'px,dialogLeft:' + left + ',resizable=no');
} else {
window.open(pageURL,Title,"toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes,resizable=no,modal=yes, copyhistory=no,width=" + w + ", height=" + h + ", top=" + top + ", left=" + left)
}
}
</script>
</head>
<body>
<a href="javascript:openWindow('http://www.google.com','Google',800,600);">Launch</a>
</body>
</html>
为了澄清一点,该函数旨在测试是否存在ShowModalDialog(假设只有IE支持它)并且在支持W3C window.open命令的所有内容中落入正确的window.open分支,该命令实现了“模态”选项。这个想法是,如果ShowModalDialog被实现,那么它将使用它,否则使用带有“模态”选项的window.open。
答案 0 :(得分:4)
showModalDialog中的半冒号,而不是逗号:
<html>
<head>
<script language="javascript" type="text/javascript">
function openWindow(pageURL,Title,w,h)
{
var left = (screen.width - w) / 2;
var top = (screen.height - h) / 2;
var options;
if (window.showModalDialog) {
options = 'dialogwidth:' + w + ';dialogheight:'+ h + ';dialogtop:'+ top + ';dialogleft:' + left + ';resizable=no';
console.log(options);
window.showModalDialog(pageURL, Title, options);
} else {
options = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes,resizable=no,modal=yes, copyhistory=no, width=" + w + ", height=" + h + ", top=" + top + ", left=" + left;
console.log("window.open options: " + options);
window.open(pageURL, Title, options)
}
}
</script>
</head>
<body>
<a href="javascript:openWindow('http://www.google.com','Google',800,600);">Launch</a>
</body>
</html>
答案 1 :(得分:0)
showModalDialog()
是window
的有效成员吗?我在文档中找不到它。
编辑:刚刚进行了快速Google搜索。 showModalDialog
不是W3C标准,并未在Firefox中实现。