открытие всплывающего окна в IE - участник не найден

Это происходит в IE6, когда пользователь открывает всплывающее окно, в котором открывается PDF-файл. (эта часть работает).

Затем пользователь открывает другое всплывающее окно, и в этот момент я получаю эту ошибку.

Здесь есть хорошее описание и возможное решение

мой вопрос таков:

Есть ли лучшее решение? Открывать окно и сразу же закрывать его кажется мне глупым решением.


person mkoryak    schedule 12.06.2009    source источник


Ответы (2)


Я думаю, что у меня есть лучшее решение, которое не требует предварительного закрытия окна. Проблема в том, что IE не переопределит окно (PDF или другое), если вы попытаетесь снова открыть его с пустым URL-адресом (например, ''). Однако он заменит PDF-файл с непустым URL-адресом. Это может быть файл, но about:blank работает еще лучше (что обычно и делает пустой URL).

В зависимости от того, как написан ваш код, вам может понадобиться try/catch, но это должно устранить необходимость:

windowHandle = window.open('about:blank',name,attributes);
windowHandle.document.location.href = url;
windowHandle.focus();

about:blank вытеснит PDF-файл из дочернего окна и позволит вам делать то, что вам нужно. Возможно, было бы неплохо поместить настройку URL-адреса и focus() в обработчике windowHandle.onload(), чтобы не было проблем со временем при удалении PDF-файла. То есть:

windowHandle.onload=function(){
    windowHandle.document.location.href = url;
    windowHandle.focus();
};
person lukpac    schedule 17.11.2011

Я решил проблему, используя блок try catch.

windowHandle = window.open('',name,attributes);
try {
    windowHandle.document.location.href = url;
} catch (exc) {
    windowHandle.close();
    windowHandle = window.open('',name,attributes);
    windowHandle.document.location.href = url + suffix;
}
windowHandle.focus();

Кажется, работает для меня.

person yoda    schedule 18.12.2009
comment
Интересно, в следующий раз, когда это произойдет, я попробую ваше решение. - person mkoryak; 22.12.2009