我在<iframe>
中有一个元素我想使用<iframe>
之外的链接激活。
示例:
<iframe src="iframe.html" id="iframe">
*inside the iframe*
<div id="activate" class="activate">
</iframe>
<a href="#activate" target="iframe">Link</a>
我认为这会起作用,但显然什么也没做,因为我很蠢。有什么想法吗?
答案 0 :(得分:14)
加框页面(test.html
):
....... lots of content ....
<div id="activate">Inside frame</div>
包含框架(page-containing-frame.html
)的网页:
<iframe src="test.html" name="target-iframe"></iframe>
<a href="test.html#activate"
target="target-iframe"
onclick="frames['target-iframe'].document.getElementById('activate')
.scrollIntoView();return false">Click</a>
^ That's the link. I've split up code over multiple lines for visibility
name
属性,其值为target-iframe
(显然,您可以选择任何所需的值)。该链接包含三个属性,每个属性支持两种滚动到框架中链接的方法:
target="target-iframe"
和href="test.html#activate"
href
属性必须是框架的路径,后缀为锚点,例如test.hrml#activate
。此方法将使框架页面重新加载。此外,如果锚点已经在#activate
,则此方法将不再有效。frames
对象(按名称,不按id,target-iframe
)访问所需的帧。然后,选择锚点(document.getElementById('activate')
最后,scrollIntoView
方法用于在视口内移动元素
onclick
方法以return false
结尾,因此默认行为(即链接之后,导致页面刷新)不会发生。您当前的代码无效,因为缺少name
属性(target="..."
无法匹配ID,只能匹配名称)。此外,#activate
在当前页面的上下文中进行解析,因此,链接指向page-containing-frame.html
。