9

我在我的网站上使用这段 jQuery/Javascript 代码来打开一个弹出窗口:

$('#change_photo_link').click(function(){
    $id = $('#id').attr('value');

    window.open("photo.upload.php?id=" + $id,"Upload Photo",
    "menubar=no,width=430,height=100,toolbar=no");
});

此代码适用于 Firefox 和 Chrome。它不适用于 IE7 或 IE8(尚未测试 IE6)。IE弹出错误就行了window.open。为什么?IE 给出的错误是“无效参数”,仅此而已。

4

2 回答 2

32

它是第二个参数中的空间导致它。如果您使用“UploadPhoto”而不是“Upload Photo”,它会起作用:

$('#change_photo_link').click(function(){
    $id = $('#id').attr('value');

    window.open("photo.upload.php?id=" + $id,"UploadPhoto",
    "menubar=no,width=430,height=100,toolbar=no");
});

我似乎找不到任何官方原因说明为什么windowName参数中的空格window.open()会导致错误,但这可能只是一个实现细节。用作内部windowName引用,并且可以用作锚点或表单的目标属性的值,所以我猜 IE 无法在内部处理它。Gecko/Firefox 的参考文档说此参数不应包含空格,但显然当前版本的 Gecko 不会有问题。

于 2010-02-03T03:54:34.303 回答
9

windowName参数只能包含字母数字字符和下划线(即)[A-Z0-9_]

你必须改变

window.open("photo.upload.php?id=" + $id,"Upload Photo",
"menubar=no,width=430,height=100,toolbar=no");

window.open("photo.upload.php?id=" + $id,"Upload_Photo",
"menubar=no,width=430,height=100,toolbar=no");

或其他没有空格的名称。

请参阅https://developer.mozilla.org/En/DOM/Window.open

于 2010-02-03T04:01:36.650 回答