Accedi al DOM del genitore dallo script in un iframe in IE Mobile
-
05-07-2019 - |
Domanda
Ho una finestra incorniciata (attualmente iframe ma potrebbe essere un frame) - Non ho il controllo su questo.
Vorrei rilevare se il mio contenuto si trova all'interno di un iframe (o frame).
Volevo confrontare la posizione del documento corrente con quella contenuta nell'oggetto in alto ma sembra che sia lo stesso oggetto (finestra in alto ===).
Dopo una lunga ricerca su Google sono arrivato a questo IEMobile post di blog e in uno dei commenti c'è questa risposta:
iemoblog ha detto:
No, non puoi accedere a nessuna parte di DOM del genitore dallo script in un iframe in IE Mobile.
20 dicembre 2007 12:12
Non riesco a trovare alcuna documentazione a riguardo - qualcuno può aiutare a confermare questo o anche meglio - suggerire un modo per rilevare se la pagina è "incorniciata"?
Soluzione 2
Dato che non sono arrivato da nessuna parte dopo aver trovato il commento lasciato nel Blog di IE Mobile (di Charles Morris - Program Manager del team di IE Mobile, sul suo post) Sono costretto ad aggiungere questa risposta e dichiarare che è:
Come progettato (o almeno un bug)
prc detto :
per quanto riguarda il supporto iframe: posso creare un iframe, ma non sono in grado di farlo " guarda fuori " la cornice. & Quot; top " e & Quot; genitore " entrambi sembrano riferirsi solo a l'iframe stesso e non il massimo antenato o antenato immediato come il la documentazione suggerisce che dovrebbe. C'è un modo per fare riferimento a JavaScript variabili nel documento allegato dall'interno di un iframe?
19 dicembre 2007 21:29
iemoblog ha detto :
No, non puoi accedere a nessuna parte di DOM del genitore dallo script in un iframe in IE Mobile.
20 dicembre 2007 12:12 PM
Altri suggerimenti
Il problema principale è che se il frame proviene da un dominio diverso, allora il container allora il tuo JavaScript è in sandbox e non può accedere all'altro frame / container.
Quello che puoi fare è provare a confrontare window
con window.top
e i possibili risultati sono:
1. Sono uguali - > sei la finestra in alto nella pagina
2. Non sono gli stessi - > non sei la finestra in alto nella pagina, c'è una pagina contenitore, nello stesso dominio come te, che contiene la tua finestra come frame o iframe.
3. Viene generata un'eccezione di sicurezza - > non sei la finestra superiore della pagina, ma la finestra superiore proviene da un altro dominio e non puoi accedervi.
forse qualcosa del genere:
try {
if (window == window.top)
return "I'm parent";
else
return "I'm a child of " + window.top.location;
} catch (e) {
return "I'm a child of something from another domain";
}