Я открываю модальное всплывающее окно. Затем я обращаюсь к текстовому полю родительского окна и другим атрибутам с помощью window.opener
. Он отлично работает в firefox, но не в IE8. Он дает ошибку "window.opener is null". Как получить доступ к атрибутам родительского окна в дочернем окне, которое работает в обоих браузерах.
Альтернативы window.opener
Ответ 1
Вы можете передать аргументы функции showModalDialog. Просто передайте объект окна в качестве аргумента.
window.showModalDialog(theURL, window);
Yo может обращаться к аргументам из модального окна с помощью dialogArguments. См.: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
Ответ 2
Существует два способа решения проблемы: Примечание: " window.opener" не поддерживается IE, если используется showModalDialog.
1) Вместо " window.showModalDialog" используйте " window.open"
2) Если вы хотите использовать " window.showModalDialog", выполните следующие действия:
<script language="javascript" type="text/javascript">
function YourFunction()
{
var opener = null;
if (window.dialogArguments) // Internet Explorer supports window.dialogArguments
{
opener = window.dialogArguments;
}
else // Firefox, Safari, Google Chrome and Opera supports window.opener
{
if (window.opener)
{
opener = window.opener;
}
}
// write you code and refer "opener"
window.close();
}
</script>
Ответ 3
Отключить защищенный режим Internet Explorer, который запрещает доступ к этому объекту.
Шаги для этого:
- Нажмите Alt + T, чтобы отобразить меню "Сервис"
- Нажмите "Параметры Интернета"
- Выберите вкладку "Безопасность"
- Убедитесь, что выбранная зона содержит ваш сайт. Для сайта интрасети это, как правило, зона "Местная интрасеть".
- Отключить "Включить защищенный режим"
- Закройте все вкладки и окна IE и заново откройте.
Теперь вы должны иметь доступ к объекту window.opener.
Ответ 4
Подход, который я бы принял, следующий:
- Использовать существующую библиотеку пользовательского интерфейса JavaScript, потому что вы не первый человек, который когда-либо захотел этого сделать, в противном случае
- Создайте функцию под названием
OpenWindow
, которая просматривает браузер для методаwindow.opener
Например:
if(window.opener == undefined) {
//probably not Firefox...
}
и если он находит его, он использует его, иначе он проверяет вариант IE и использует его. И затем он проверяет версию Safari и т.д.