window.attachEvent не работает в IE - PullRequest
2 голосов
/ 11 августа 2010

Я хочу отобразить картинку в новом окне. Для этого я написал функцию javascript, которая открывает новое окно. Я открываю окно с фиксированным размером (например, 500 х 500). Но я хочу изменить размер окна до размера изображения. Для этого я присоединяю событие к этому вновь созданному окну. Вот только код для IE, потому что в FF и Chrome все работает.

var win = null;
function showPicture(url) {
    win = window.open(url, "pic", "height=500,width=500");
    if (window.attachEvent) {
        win.attachEvent("onload", correctWinSize);  
    }
    // Not IE attach event code
}

function correctWinSize() {
     // Here is resize code
}

Проблема в том, что событие срабатывает только иногда. Я просто нажимаю на гиперссылку, которая вызывает showPicture () и размер окна иногда изменяется, а иногда нет. Есть ли у вас какие-нибудь идеи, чтобы заставить его работать?

1 Ответ

1 голос
/ 11 августа 2010

Вы не можете захватить событие load другого окна надежно кросс-браузерным.Вам нужно обработать событие load во всплывающем окне и вызвать функцию в главном окне, чтобы сообщить, что она загружена:

В главном окне

function popUpLoaded() {
    alert("Loaded!);
    // Do your resizing thing
}

Во всплывающем окне

window.onload = function() {
    // Check the opener still exists to prevent an error in the
    // event it's been closed
    if (!window.opener.closed) {
        window.opener.popUpLoaded();
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...