2010-04-11 4 views
1

Mon site a un iframe qui est rempli dynamiquement avec du contenu html. Le html contient souvent des ancres nommées, qui fonctionnent bien dans IE/Chrome mais dans Firefox il rouvre toute la page dans l'iframe.Firefox rechargement de la page parent dans iframe lorsque vous cliquez sur l'ancre

Voici un exemple: chargez la page dans Firefox, faites défiler vers le bas de l'iframe, cliquez sur le lien "retour en haut", et vous verrez de quoi je parle.

<html><head></head><body onload="setFrameContent();"><script> 

var htmlBody = '<html> <head></head> <body>' + 
'<a name="top"><h1>top</h1></a>' + 
'<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>' + 
'<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>' + 
'<a href="#top">back to top</a></body> </html> '; 

function setFrameContent(){ 
    if (frames.length > 0) { 
     var d = frames[0].document; 
     d.open(); 
     d.write(htmlBody); 
     d.close(); 
    } 
} 

</script> 
<h1>Here's an iframe:</h1> 
<iframe id="htmlIframe" style="height: 400px; width: 100%"><p>Your browser does not support iframes.</p></iframe> 
</body></html> 

Des idées?

Répondre

0

J'ai eu le même problème et j'ai trouvé cette solution de contournement.

<html> 
<head> 
<script> 
var htmlBody = '<html> <head></head> <body>' + 
'<a id="top"><h1>top</h1></a>' + 
'<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>' + 
'<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>' + 
'<a href="javascript:parent.gotoAnchor(\'top\')">back to top</a></body> </html> '; 

function setFrameContent(){ 
    if (frames.length > 0) { 
     var d = frames[0].document; 
     d.open(); 
     d.write(htmlBody); 
     d.close(); 
    } 
} 

function gotoAnchor(id) 
{ 
    var el = null; 
    el = window.frames['myiframe'].document.getElementById(id); 
    window.frames['myiframe'].scrollTo(0,el.offsetTop); 
} 
</script> 
</head> 
<body onload="setFrameContent();"> 
<h1>Here's an iframe:</h1> 
<iframe name="myiframe" id="htmlIframe" style="height: 400px; width: 100%"><p>Your browser does not support iframes.</p></iframe> 
</body> 
</html> 

Espérons que cela aide.

+0

Nice! J'ai déjà retravaillé la page, donc je ne peux pas utiliser votre solution, mais j'espère que cela aidera quelqu'un d'autre. – masty

Questions connexes