从iframe内滚动父文档
Scrolling a parent document from within an iframe
我有两个这样的文档:
http://mydomain/nsobd.html
<html>
<body>
<p name="parentElem" id="parentElem">No sign of Big Dave</p>
<iframe src="http://subdomain.mydomain/nsobd2.html"></iframe>
</body>
</html>
http://subdomain.mydomain/nsobd2.html
<html>
<body>
<a href="???" id="childLink">No sign of Big Dave</a>
</body>
</html>
我想要的是,当有人点击iframe中的childLink
时,parentElem
滚动到视图中。
I have try:
- 使用
<a href="#parentElem" target="_parent">
-这加载http://subdomain.mydomain/nsobd2.html#parentElem在父帧 - 使用
<a href="javascript:document.findElementById('parentElem').scrollIntoView()">
-这不起作用,因为两个文档在不同的子域。
还有其他想法吗?
由于您试图在两个域之间进行通信,简短的答案是您不能。由于浏览器级别的限制,您无法禁止跨站点脚本。
例如,假设我注册了域名superwinningcontest.com并向人们的电子邮件发送链接。当他们加载主页时,我可以在里面隐藏一些iframe,阅读他们的Facebook动态,查看最近的亚马逊或PayPal交易,或者——如果他们使用的服务没有实现足够的安全性——从他们的账户中转移资金。这就是为什么JavaScript仅限于同域和同协议。[源]
但是,您可以通过跨文档消息传递实现您的目标。github项目窗口可能会帮助你。因此,不是从iframe调用或执行父窗口中的某些函数,而是从iframe向父窗口发送一条消息"嘿,介意滚动到X吗?"当父帧接收到此消息时,它可以决定执行一些函数,这些函数可能会滚动到位置x。
在这个StackOverflow线程中似乎有许多相关的答案。例如,在这个答案中,用户实现了一个跨文档消息传递方案,它可能适合您。相关文章:
- 从Google Analytics文档中重新创建滚动效果
- jQuery 获取文档宽度和高度,不包括水平/垂直滚动条
- 我如何使用滚动顶部()获取HTML文档的位置
- 将鼠标悬停在文档滚动按钮上
- OnClick 会加载新的 HTML 文档,并应滚动到其底部
- 添加或减去 $(窗口).scrollTop + $(窗口).height == $(文档).height() - 滚动到
- 将数据预置到垂直滚动的文档时,如何保持前一部分可见
- jQuery AUTOMATIC滚动(无需点击按钮)文档就绪
- 在滚动时获取元素相对于文档的动态位置
- scrollTop为javascript中的所有文档元素返回0,但滚动事件在body标记上触发
- 检测Angular JS中滚动到文档结尾的实现
- HTML文档类型导致视频自动播放而不滚动到
- 记住HTML文档上的最后一个滚动位置以便重复使用
- 减去文档片段滚动的垂直偏移量
- 如何使文档(页面)向左和顶部以及相对于正文的滚动(向左和顶部滚动)
- 打印预览上不需要的滚动条,不显示文档的第二页
- 在JavaScript中垂直文档滚动位置,可跨浏览器兼容,最高可达ie8
- 美元(文档).滚动在IE8中不开火
- 更改文档滚动上的Div Css
- Chrome DevTools:设置文档滚动更改的断点