Javascript"window.open"代码在Internet Explorer 7或8中不起作用

Jam*_*ght 9 javascript jquery internet-explorer window.open

我在我的网站上使用这一块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");
});
Run Code Online (Sandbox Code Playgroud)

此代码适用于Firefox和Chrome.它不适用于IE7或IE8(尚未测试IE6).IE在该行上弹出错误window.open.为什么?IE给出的错误是"无效参数",这就是全部.

zom*_*bat 32

它是导致它的第二个参数中的空间.如果您使用"UploadPhoto"而不是"上传照片",它的工作原理如下:

$('#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");
});
Run Code Online (Sandbox Code Playgroud)

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

  • 这可能是因为第二个参数是窗口的*name*,并且不允许包含空格 (2认同)
  • @Hogan:这是一个内部_name_,而不是_title_. (2认同)
  • 请注意,如果第二个参数包含" - ",IE也将失败.例如,"twitter-window"将失败.我非常喜欢IE! (2认同)

nto*_*end 9

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

你必须改变

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

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

或其他一些没有空格的名称.

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