是否可以在滚动 div 内有一个非滚动 iFrame,并且 iFrame 内的锚链接可以正常工作? iFrame 内的锚链接应该滚动到 iFrame 内的位置,我不需要/不希望它们指向父页面上的元素。
这是我的 jsFiddle 和一个简单的例子:
http://jsfiddle.net/shopguy/WjmHG/
及其代码:
<div style="width: 100%; height: 300px; overflow: auto;">
<iframe style="width: 100%; height: 2000px;" src="http://www.hypergurl.com/anchors.html" scrolling="no"></iframe>
</div>
我与示例中使用的 hypergurl.com 链接没有关联,这只是我可以找到的第一个示例,其中包含一个带有 id/name 语法链接的锚点的页面。
如果您加载 JSFiddle 并单击 iFrame 内的“跳转到底部”链接,它不会执行任何操作(使用 FireFox 19.0.2 进行测试)。在使用各种页面进行测试时,它在 FireFox 中永远无法工作,在 Chrome 中,它有时会在第一次单击时工作,但如果您向上滚动并再次单击它就无法工作。在 IE8 中,它大部分时间都在工作(滚动)。
如果我让 iFrame 本身具有滚动条(删除滚动=“否”),滚动始终正常工作。但这对我来说不是一个实用的解决方案,因为我在框架之外有想要滚动的内容。在我的真实代码中,我动态设置 iFrame 的高度以填充其内容,这样它看起来更像是我页面上的内容。
关于我为什么需要这样做的附加信息:
我正在创建一个基于 Web 的电子邮件客户端,到目前为止,如果我在 iframe 中显示电子邮件的 HTML 正文,而不是尝试在我的页面内的表格单元格或 div 中显示,似乎问题最少。我希望这些类型的链接能够正常工作。我确实对内容有一定的控制权,它来自我的服务器,我可以对其进行一些修改(但不想过多地破解它)。例如,我已经修改了所有链接以在新窗口中打开(但不是以 # 开头的链接,所以这不是我的问题)。
我知道 GMail 不使用 iFrame,但我的 XFINITY(由 Comcast 有线电视提供)基于 Web 的电子邮件客户端使用,并且他们设法让这些工作(但到目前为止还没有弄清楚他们在做什么)。