在iFrame内跳转链接

moe*_*oey 15 html iframe firefox hyperlink

在iframe内部(在页面A上),我有一个简单的页面(页面B),它有一些跳转链接(例如<a href="#my-id">jump link</a>)到页面的不同部分(页面B).iframe高度预设为比page-B的高度更长; 这是一项要求.

由于某些原因,跳转链接在FF上不起作用(我在Mac/FF 10.0.2上); 但是,它在Safari和IE8上运行正常.这是示例页面.

页面代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jump Link Test on an iFrame</title>
</head>
<body>
<h1>Page that has an iFrame</h1>
<iframe width="100%" height="2000" src="./iframe.html" frameborder="0" scrolling="no">
</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

iframe.html代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>iFrame Content</title>
<style type="text/css">
.box {
    margin: 0 0 5px;
    width: 400px;
    height: 400px;
}
#box1 {
    background-color: #f00;
}
#box2 {
    background-color: #f0f;
}
#box3 {
    background-color: #00f;
}
</style>
</head>
<body>
<ul>
    <li><a href="#box1">Box 1</a></li>
    <li><a href="#box2">Box 2</a></li>

    <li><a href="#box3">Box 3</a></li>
</ul>
<div>
    <div id="box1" class="box"></div>
    <div id="box2" class="box"></div>
    <div id="box3" class="box"></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

注意:如果我设置iframe高度< page-B的高度,问题就会解决.然而,不幸的是,这不是给我的情况,因为我都进不去的选项页-A .

Ney*_*sor 18

仅使用HTML无法实现这一点.

正如您可以阅读Firefox Bug Report Nr.638598这是很久以前提到的!许多人也不喜欢这种行为,但Jonas Sicking在评论中说,这种情况永远不会改变.他认为这是firefox阻止这种潜在黑客功能的一个功能.

如果你不知道他在这里读到他是mozilla 的项目的技术主管,以及W3C规范的编辑.

其他人试图找到像Matthew这样的解决方案,但这个例子在我的html结构的简短测试用例中不起作用.其他人说它应该与JavaScript和scrollTo()函数一起使用.

我很遗憾地说这只是FireFox的限制,但希望你很高兴能够安全地了解这个问题.


Ces*_*ssa 12

我已经遇到过这个问题.在我的情况下,我无法使用JavaScript解决方案,因为我的iframe在不同的域中,我无法访问父页面.

但是有一个HTML解决方法.

更改您的链接:

<a href="#my-id">jump link</a>
Run Code Online (Sandbox Code Playgroud)

对此:

<a target="_parent" href="http://parenturl.com/#my-id">jump link</a>
Run Code Online (Sandbox Code Playgroud)

<div id="my-id"></div>在父页面中创建一个隐形,并使用CSS定位它.