我的网站有一个动态填充html内容的iframe。 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>
有什么想法吗?
答案 0 :(得分:0)
我遇到了同样的问题并找到了解决方法。
<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>
希望这有帮助。