Otwieram modalne okno podręczne. Następnie uzyskuję dostęp do pola tekstowego okna nadrzędnego i innych atrybutów za pomocą window.opener
. Działa dobrze w firefoxie, ale nie w IE8. Daje błąd 'window.opener ma wartość null'. Jak uzyskać dostęp do atrybutów okna nadrzędnego w oknie podrzędnym, które działa w obu przeglądarkach.alternatywy window.opener
Odpowiedz
Możesz przekazywać argumenty, aby pokazać funkcję ModalDialog. Po prostu przekazuj obiekt okna jako argument.
window.showModalDialog(theURL, window);
Yo może uzyskać dostęp do argumentów z okna modalnego za pomocą dialogArguments. Zobacz: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
Powinienem chyba zauważyć, że działa to w IE i FF i prawdopodobnie także w innych przeglądarkach. – Kaitnieks
showModalDialog jest przestarzały przez chromium 35 (lipiec 2014). Zobacz http://blog.chromium.org/2014/07/disabling-showmodaldialog.html i http://blog.chromium.org/2014/04/chrome-35-beta-more-developer-control.html – edigu
podejścia wziąłbym jest następujący:
- użyć istniejącej biblioteki JavaScript UI, bo nie jesteś pierwszą osobą, która kiedykolwiek chcesz to zrobić, w razie braku
- Tworzenie funkcji o nazwie
OpenWindow
, że przeglądarka wącha dla metody
na przykład window.opener
:
if(window.opener == undefined) {
//probably not Firefox...
}
i jeśli go znajdzie, to użyje go, w przeciwnym razie przetestuje wariant IE i użyje go. A następnie sprawdza wersję przeglądarki Safari, itp ...
Istnieją dwa sposoby rozwiązania problemu: Uwaga: „window.opener” nie jest obsługiwana przez IE jeśli „showModalDialog” jest używana.
1) Zamiast "window.showModalDialog" użytkowania "window.open"
2) Jeśli chcesz używać "window.showModalDialog", a następnie wykonaj następujące czynności:
<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>
Wyłącz "Tryb chroniony" programu Internet Explorer, który uniemożliwia dostęp do tego obiektu.
Kroki tego są:
- Naciśnij Alt + T, aby wyświetlić menu Narzędzia
- kliknij "Opcje internetowe"
- Wybierz "Security" kartę
- Upewnij strefa wybrany zawiera Twoja strona. W przypadku witryny intranetowej zwykle będzie to strefa "Lokalny intranet".
- Odznacz "Włącz tryb chroniony"
- Zamknij wszystkie karty IE i okna i ponownie otwórz.
Teraz powinno być możliwe uzyskanie dostępu do obiektu window.opener.
Jako alternatywę cross-browser, można dać atrybut niestandardowy do nowego okna podczas otwierania go:
var popup = window.open(...);
popup.isPopup = true;
następnie w określoną stronę:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
- 1. JavaScript: Jak ostrzec zmienną na window.opener
- 2. Alternatywy PHP?
- 3. Alternatywy SyncAdapter
- 4. Alternatywy Graphviz?
- 5. alternatywy webistrano?
- 6. Darmowe alternatywy dla PowerGREP
- 7. Projektowanie alternatywy SQL?
- 8. Alternatywy członkostwa ASP.NET
- 9. Alternatywy dla wzoru singleton?
- 10. Oprogramowanie Mercurial Hosting, alternatywy?
- 11. Trzy20 konkurentów/alternatywy
- 12. Alternatywy dla marynowania
- 13. Alternatywy dla TOAD (Linux)
- 14. Optymalizowanie alternatywy dla DateTime.Now
- 15. zagnieżdżone alternatywy wydajność zapytań
- 16. Alternatywy NumPy einsum
- 17. Alternatywy dla WCF
- 18. Darmowe alternatywy dla Kodów?
- 19. Alternatywy dla @VisibleForTesting
- 20. Alternatywy dla YQL
- 21. Alternatywy dla JUnit
- 22. Alternatywy dla chmurnego CDN?
- 23. Ternary operator (alternatywy)
- 24. Szukałem alternatywy dla JasperReports
- 25. Alternatywy dla Inflector.Net
- 26. Jakie są alternatywy ClickOnce?
- 27. Alternatywy dla ERB
- 28. Alternatywy dla iframe srcdoc?
- 29. VBA zwarciowe `And` Alternatywy
- 30. Alternatywy dla serwera ArcGIS
Próbowałeś window.parent.opener? –
Próbuję go window.parent.opener, ale nie mogę uzyskać dostępu do obiektu dokumentu nadrzędnego. Przekazuję parent.document jako argument i uzyskuję parent.document w popup jako window.dialogArguments.parentDocumentObj gdzie parentDocumentObj jest nazwą zmiennej, która zawiera dokument. – dmay