Я открываю модальное всплывающее окно. Затем я обращаюсь к текстовому полю родительского окна и другим атрибутам, используя window.opener
. Он отлично работает в firefox, но не в IE8. Он дает ошибку 'window.opener is null'. Как получить доступ к атрибутам родительского окна в дочернем окне, которое работает в обоих браузерах.window.opener alternatives
ответ
Вы можете передать аргументы функции showModalDialog. Просто передайте объект окна в качестве аргумента.
window.showModalDialog(theURL, window);
Yo может получить доступ к аргументам из модального окна с помощью dialogArguments. См: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
Должен заметить, что это работает в IE и FF и, возможно, в других браузерах. – Kaitnieks
showModalDialog устарел от хрома 35 (июль 2014 г.). См. Http://blog.chromium.org/2014/07/disabling-showmodaldialog.html и http://blog.chromium.org/2014/04/chrome-35-beta-more-developer-control.html. – edigu
подход, который я бы заключается в следующем:
- Используйте существующую библиотеку JavaScript UI, потому что вы не первый человек, который когда-либо хотите сделать это, в противном случае, что
- Создайте функцию под названием
OpenWindow
, что браузер нюхает дляwindow.opener
метода
Например:
if(window.opener == undefined) {
//probably not Firefox...
}
, и если он находит его, он использует его, иначе он проверяет вариант IE и использует его. А затем он проверяет версию сафари, и т.д ...
Есть два пути решения проблемы: Примечания: «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>
Отключить защищенный режим Internet Explorer, который предотвращает доступ к этому объекту.
Шаги для этого являются:
- Нажмите Alt + T, чтобы показать в меню Инструменты
- нажмите «Свойства обозревателя»
- Выберите вкладку «Безопасность»
- Убедитесь зона выбрана содержит твой сайт. Для сайта интрасети это, как правило, зона «Местная интрасеть».
- Untick «Включить защищенный режим»
- Закройте все вкладки и окна IE и откройте их снова.
Теперь у вас должен быть доступ к объекту window.opener.
В качестве альтернативы кроссбраузерной, вы можете дать пользовательский атрибут в новом окне, когда вы открываете его:
var popup = window.open(...);
popup.isPopup = true;
Затем в упомянутой странице:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
- 1. @NotTransactional alternatives
- 2. IFrame alternatives
- 3. Searchlogic alternatives
- 4. SQLite Alternatives
- 5. MediaRecorder Alternatives
- 6. Memtime Alternatives
- 7. Paging Alternatives
- 8. Aptana Alternatives
- 9. window.opener & facebox
- 10. update-alternatives: warning:/etc/alternatives/java is dangling
- 11. Push Notification Alternatives
- 12. VLookup Alternatives (Google Spreadsheets)
- 13. update-alternatives for ant
- 14. SQLite Alternatives для C++
- 15. Kinect v2 Unity (+ Alternatives?)
- 16. .net winform Grid Alternatives?
- 17. Mysql auto increment alternatives
- 18. C++ if statement alternatives
- 19. Использование @alternatives в CDI
- 20. Android Login Alternatives
- 21. SQL OR Operator Alternatives
- 22. Drupal - Node Clone Alternatives
- 23. Android BatteryManager Alternatives
- 24. Java Runtime.getRuntime(). Exec() alternatives
- 25. WPF Binding Alternatives/Enhancements
- 26. window.opener lost after redirect
- 27. Firefox window.opener issue
- 28. IE8 window.opener проблема
- 29. Target window.opener IFrame
- 30. Проблемы с использованием window.opener
Вы пробовали window.parent.opener? –
Я пытаюсь его window.parent.opener, но я не могу получить доступ к объекту родительского документа. Я передаю parent.document как аргумент и получаю parent.document в popup как window.dialogArguments.parentDocumentObj где parentDocumentObj - это имя переменной, которая содержит документ. – dmay