Подтвердить что ты не робот

Альтернативы window.opener

Я открываю модальное всплывающее окно. Затем я обращаюсь к текстовому полю родительского окна и другим атрибутам с помощью window.opener. Он отлично работает в firefox, но не в IE8. Он дает ошибку "window.opener is null". Как получить доступ к атрибутам родительского окна в дочернем окне, которое работает в обоих браузерах.

4b9b3361

Ответ 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 и т.д.