Javascript window.open возвращает ноль в 32-битном IE8 на Win7 x64 - PullRequest
7 голосов
/ 01 декабря 2009

Я прочитал соответствующие вопросы по этой теме, но пока не нашел решения этой проблемы. У меня есть простая функция JavaScript, которая вызывает window.open при нажатии на ссылку:

var newwindow;
function pop(url)
{
    newwindow=window.open(url,'','height=500,width=532');
    if (window.focus) {newwindow.focus();}
}

Это прекрасно работает в Chrome, Firefox и даже работает в 64-битном IE 8. Однако, когда я пытаюсь это сделать в 32-битном IE 8, я получаю ошибку, что 'newwindow' является нулевым или не является объектом .

Есть идеи, почему это происходит только в 32-битном IE 8?

Я догадывался, что это было связано с UAC в Windows 7 (я использую Win 7 x64), но я получаю сообщение об ошибке даже после выключения защищенного режима и запуска с включенным представлением совместимости.

Мне также интересно, почему Windows 7 x64 поставляется с 32-разрядной и 64-разрядной версиями IE 8 и почему 32-разрядная версия была прикреплена к моей панели задач ...

Ответы [ 3 ]

10 голосов
/ 11 декабря 2012

Internet Explorer возвращает ноль, если URL находится за пределами вашего текущего домена. Вы можете обойти это, сначала открыв пустую страницу, а затем перейдя в окно к фактическому URL:

var newwindow;
function pop(url)
{
    newwindow=window.open('','','height=500,width=532');
    newwindow.location = url;

    if (window.focus) {newwindow.focus();}
}
2 голосов
/ 01 декабря 2009

Я не знаю о ваших других проблемах, но причина, по которой 32-битная версия является более заметной по умолчанию, состоит в том, что большинство плагинов все еще не имеют 64-битных версий, например Flash, поэтому средний пользователь будет очень смущен, когда он не сможет заставить Youtube работать на своей новой блестящей 64-битной системе.

0 голосов
/ 20 февраля 2012

Я заметил нечто подобное.

У меня есть окно, открытое с помощью функции IE showModalDialog. В этом окне у меня есть кнопка, которая вызывает window.open. Этот вызов возвращает null. Затем я открыл ту же страницу в обычном окне, а не в модальном диалоге. На этот раз кнопка также вернула null, но IE сказал мне, что веб-страница хочет открыть всплывающее окно, и это заблокировано. Он дал мне возможность разблокировать его ... и он начал работать в обоих случаях - модальное и обычное окно.

Похоже, что в модальном режиме в IE IE не показывает предупреждения типа popup blocked.

...