Ecco il caso:
pagina A contiene iframe B, B contiene iframe C, A e B sono sotto lo stesso dominio, C sotto un altro.
C tenta di ripristinare la posizione del genitore B con informazioni aggiuntive che seguono "#" per risolvere le comunicazioni tra domini tramite Fragment Id Messaging.
IE6/7/8 funziona correttamente con questo caso, mentre Firefox blocca l'ubicazione parent.location con il messaggio di errore [Accesso alla proprietà negata ": 1010]. Ma se B è la finestra in alto, il che significa che non c'è A, anche Firefox vive.
È strano per me ... Potresti aiutarmi per favore?
Grazie!Impostazione posizione genitore JavaScript di dominio incrociato errore firefox
risposta
Storicamente, qualsiasi finestra potrebbe cambiare la posizione di qualsiasi altra finestra. Questo risultò essere un problema perché, tra le altre cose, significava incorporare un iframe di accesso in una finestra non sicuro (perché un sito dannoso poteva sostituire l'iframe di accesso con una versione falsificata). Nel corso del tempo sono state applicate ulteriori limitazioni alle modifiche della posizione alle finestre del browser, fino a ora, quando HTML5 e la maggior parte dei browser hanno raggiunto un accordo comune su the ancestor policy. In poche parole, parafrasando le specifiche HTML5, una finestra A può modificare la posizione di un altro se e solo se finestra B:
- le posizioni di A e B hanno la stessa origine, vale a dire che hanno lo stesso schema, ospite e porta (http, stackoverflow.com, 80 per esempio) o
- B è una finestra di livello superiore e A è una finestra in un frame annidato a una certa profondità all'interno di B (figlio diretto, figlio di un bambino, ecc.), oppure
- B è una finestra aperta utilizzando
window.open
e A può cambiare la posizione della finestra che ha aperto B (quindi B è un popup aperto da A, da una finestra popup aperta da A, oa maggiore profondità) oppure - B non è una finestra di primo livello, ma la sua finestra padre, o la sua finestra padre del genitore, o in qualche simile quantità di parentela le posizioni di quella finestra e A sono same-origin
(stessa origine è più complicato di questo, ma la descrizione incorporata sopra coglie la sua essenza e copre i casi più comuni.)
Secondo questa politica, C può cambiare la posizione di A, e A può cambiare la posizione di B o C, ma C potrebbe non cambiare la posizione di B. Se hai bisogno di aggirare questo, allora dovresti cambiare la posizione della tua A in qualcosa che cambi B in modo appropriato; alternativamente, è possibile ask your page B to change its own location.
Speriamo che sia informativo, se non necessariamente utile. Il modello di sicurezza del browser non era tanto progettato come evoluto, e solo con il recente lavoro in HTML5 è davvero stato accuratamente inchiodato per affrontare queste incongruenze tra i browser.
Detto questo, sono sorpreso che IE7 e IE8 funzionino per voi: ho capito che la politica precedente era basata principalmente sulla politica implementata da IE7.
Da C è possibile accedere alla finestra di B utilizzando window.top
.
prova, var B = window.top; B.location = "...";
se si utilizza window.top da C, ho ottenuto A piuttosto che B, ma non voglio reimpostare la posizione di A ... –
- 1. Richiesta dominio incrociato di Firefox
- 2. Problema iframe di dominio incrociato
- 3. Controllo accesso dominio incrociato?
- 4. Rilevamento carico contenuto iframe di dominio incrociato
- 5. Problemi di dominio incrociato con iframes
- 6. problema di dominio incrociato con Jquery
- 7. stampa un pdf tramite iframe (dominio incrociato)
- 8. Come implementare l'accesso agli URL del dominio incrociato da un Iframe utilizzando Javascript?
- 9. Caricamento immagine dominio incrociato Angolare + laravel
- 10. Il dominio incrociato non funziona con signalr 2.0
- 11. Chiamata Ajax del dominio incrociato nella shell Atom
- 12. Dominio incrociato jQuery Richiesta Ajax e WCF REST Service
- 13. Come analizzare il dominio incrociato XML in jQuery?
- 14. Come ottenere l'altezza di iframe nel dominio incrociato
- 15. È possibile effettuare richieste di dominio incrociato in Javascript e impostare intestazioni personalizzate?
- 16. JavaScript 'contenteditable' - Ottenimento/impostazione della posizione di inserimento
- 17. Come aggiungere il supporto del dominio incrociato al servizio WCF
- 18. Impostazione di una posizione barra di scorrimento
- 19. Faye su Heroku: Problemi con il dominio incrociato
- 20. Capire il problema del dominio incrociato in iframes
- 21. Impostazione JavaScript window.location
- 22. NS_ERROR_FAILURE: Errore in Firefox
- 23. Servizio REST AJAX per il dominio incrociato Intestazioni HTTP
- 24. EnableCrossAppRedirects: dove viene documentata la funzionalità del dominio incrociato?
- 25. Ottenere l'URL src corrente iframe nel dominio incrociato
- 26. jQuery - Come rimuovere la limitazione del dominio incrociato
- 27. usa jsonp per ottenere il dominio incrociato xml
- 28. Posizione: altezza assoluta e genitore?
- 29. Modalità browser/impostazione di emulazione per Firefox
- 30. impostazione maxlength utilizzando javascript
grazie per la tua risposta chiara e bella, riconsidererò la mia soluzione su questo. –
Grazie Jeff. Va notato che window.postMessage a cui si fa il collegamento funziona in tutti i browser moderni, ma la sintassi in IE è leggermente diversa. Ho postato una domanda simile a questa e ho finito per rispondere a me stesso. Ecco la mia risposta che ha una semplice implementazione di esempio cross-browser: http://stackoverflow.com/questions/1860470/is-there-any-way-for-an-iframe-to-change-the-top-windows- url/1861054 # 1861054 – Kip