Firefox перезагружает родительскую страницу в iframe при щелчке по имени привязки - PullRequest
1 голос
/ 12 апреля 2010

Мой сайт имеет iframe, который динамически заполняется HTML-контентом. Html часто содержит именованные якоря, которые отлично работают в IE / Chrome, но в Firefox повторно открывает всю страницу внутри iframe.

Вот пример: загрузите страницу в Firefox, прокрутите до нижней части iframe, нажмите ссылку «Вернуться вверх», и вы увидите, о чем я говорю.

<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>

Есть идеи?

1 Ответ

0 голосов
/ 17 июня 2010

У меня была такая же проблема, и я нашел этот обходной путь.

<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>

Надеюсь, это поможет.

...