问题
I am using this chunk of jQuery/Javascript code on my site to open a popup window:
$('#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");
});
This code works on Firefox and Chrome. It does not work on IE7 or IE8 (haven't tested IE6).
IE pops up an error on the line window.open
. Why? The error that IE gives is "Invalid Argument" and that's all.
回答1:
It's the space in the second parameter that's causing it. If you use "UploadPhoto" instead of "Upload Photo", it works:
$('#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");
});
I can't seem to find any official reasons as to why having a space in the windowName
parameter of window.open()
causes an error, but it's likely just an implementation detail. The windowName
is used as an internal reference, and can be used as a value for a target attribute of an anchor or form, so I guess IE can't handle that internally. The reference docs for Gecko/Firefox says that this parameter should not contain spaces, but clearly current versions of Gecko don't have a problem with it if it does.
回答2:
The windowName
argument can only contain alphanumeric characters and underscores (i.e. [A-Z0-9_]
).
You must change
window.open("photo.upload.php?id=" + $id,"Upload Photo",
"menubar=no,width=430,height=100,toolbar=no");
to
window.open("photo.upload.php?id=" + $id,"Upload_Photo",
"menubar=no,width=430,height=100,toolbar=no");
or some other name that doesn't have spaces.
See https://developer.mozilla.org/En/DOM/Window.open.
来源:https://stackoverflow.com/questions/2189537/javascript-window-open-code-wont-work-in-internet-explorer-7-or-8