Код JavaScript «window.open» не будет работать в Internet Explorer 7 или 8 - PullRequest
9 голосов
/ 03 февраля 2010

Я использую этот кусок кода 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 выдает ошибку «Неверный аргумент» и все.

Ответы [ 2 ]

32 голосов
/ 03 февраля 2010

Это пробел во втором параметре, который вызывает его.Если вы используете «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 * 1005 есть пробел* вызывает ошибку, но, скорее всего, это просто деталь реализации.windowName используется как внутренняя ссылка и может использоваться как значение для целевого атрибута привязки или формы, поэтому я думаю, что IE не может обработать это внутренне.В справочных документах для Gecko / Firefox сказано, что этот параметр должен не содержать пробелов, но, очевидно, в текущих версиях Gecko с этим проблем не возникает, если он есть.

9 голосов
/ 03 февраля 2010

Аргумент 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.

...