javascript - Jquery 从 iFrame 和 SOP 访问 $(parent.document).scrollTop

标签 javascript jquery html iframe

我正在尝试从 src= http://www.domain.com/folder/ 的 iFrame 中访问 scrollTop 值而包含 iFrame 的页面位于 http://sub-domain.domain.com/another-folder/使用下面显示的代码但我收到以下错误:

var stopval = $(parent.document).scrollTop();

错误:

Error: Blocked a frame with origin "http://www.domain.com" from accessing a cross-origin frame.

显然这是一个 SOP 问题,所以想知道是否有任何解决方法...解决此问题的方法?我在网上进行了搜索,但找不到在没有收到此错误的情况下从 iFrame 页面获取 scrollTop 值的解决方案。谢谢

最佳答案

正如 fgshepard 提到的问题可以使用 window.postmessage 解决如下:

一个。在 src= http://www.domain.com/folder/ 的 iFrame 中添加:

<script type="text/javascript">
    window.addEventListener("message", listener, false);
    function listener(event){    
      if ( event.origin !== "http://sub-domain.domain.com" )
        return
        console.log('Message Received : '+event.data);
      }
</script>

B.在包含位于 http://sub-domain.domain.com/another-folder/ 的 iframe 的页面中就在下面添加:

<script type="text/javascript">
      var win = document.getElementById("iframeid").contentWindow;
      $(window).scroll(function(){
          var wintop = $(window).scrollTop();
          win.postMessage($(window).scrollTop(), 'http://domain.com');              
      });
</script>

上述代码应将包含 iframe 的页面的 scrollTop() 值发送到 iframe 源页面。

关于javascript - Jquery 从 iFrame 和 SOP 访问 $(parent.document).scrollTop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656292/

相关文章:

javascript - 如何将一个数组的值解压到另一个数组的特定索引中?

javascript - 跨元素文件夹链接css,js文件

javascript - 如何扩展 jquery ui 小部件? (1.7)

javascript - jquery 监听器行为不正常

php - 如何在 PHP/HTML 网页上显示目录文件?

javascript - 用输入 react 替换event.target

php - Javascript 确认删除

javascript - Jquery,如何知道输入何时有 :invalid selector?

html - 如何将数据属性添加到 Html.BeginForm

javascript - 当文本字段不为空时,Ajax 自动完成 jquery 不起作用