Ho alcuni problemi nel chiamare una funzione di un iframe specifico dopo aver ricaricato un altro iframe. Funziona su tutti i principali browser, ma si comporta un po 'strano su Microsoft Edge. Avrai bisogno della seguente costellazione per ottenere l'errore. Tutti i file si trovano nella stessa directory sullo stesso server. Non ho impostato alcuna politica di sicurezza del contenuto.Perché ottengo il "permesso negato" in Microsoft Edge quando si accede a iframe padre
Se si carica il file Frame1.html, tutto andrà bene e verrà visualizzato il messaggio di "avviso".
Ma se si fa clic sul tag "Click me" sul frame4.html, il file frame.html verrà ricaricato e verrà visualizzato l'errore "permesso negato" perché l'oggetto padre (var tmpParent = parent;
) non è accessibile. Se fai nuovamente clic sul tag "a-tag" funzionerà senza errori.
Penso che sia un bug Edge, perché tutti gli altri browser possono gestirlo e si verificano solo al primo clic.
L'errore si verifica anche se si utilizza la parte superiore del genitore.
Il codice di topFrame.js viene utilizzato per trovare il Frame più in alto del mio sito. Non posso semplicemente usare top perché dovrebbe essere possibile incorporare il mio sito.
Qualcuno ha un indizio?
Grazie mille!
frame1.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 1</title>
<script type="text/javascript">
var topFrame = this;
function myAlert() {
alert('alert');
}
</script>
</head>
<body>
<iframe id="overallContentWrapper" name="mainFrame" src="frame2.html" frameborder="0"></iframe>
</body>
</html>
Frame2.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 2</title>
<script src="topFrame.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEventListener("load", function load(event) {
window.removeEventListener("load", load, false);
try {
topFrame.myAlert();
} catch (e) {
alert(e);
}
}, false);
</script>
</head>
<body>
<iframe name="subFrame" src="frame3.html" frameborder="0"></iframe>
</body>
</html>
Frame3.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 3</title>
</head>
<body>
<iframe name="subsubFrame" src="frame4.html" frameborder="0"></iframe>
</body>
</html>
Frame4.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 4</title>
</head>
<body>
<a href="frame2.html" target="mainFrame">Click me</a>
</body>
</html>
topFrame.js
try {
var tmpParent = parent;
var topFrame = tmpParent.topFrame;
while (topFrame === undefined) {
tmpParent = tmpParent.parent;
topFrame = tmpParent.topFrame;
}
} catch (e) {
alert(e);
}
Forse questo https://davidwalsh.name/iframe-permission-denied~~V~~3rd – mplungjan
Impostazione X-Frame-opzioni per SAMEORIGIN non risolvere il problema :-(ma thx. – gollum1007
@ gollum1007 siete riusciti a risolvere questo? Eventuali altri aggiornamenti "Per favore condividi, anche noi stiamo vivendo lo stesso." –