iOS document.body.scrollTop 在 iframe 中始终为 0

Posted

技术标签:

【中文标题】iOS document.body.scrollTop 在 iframe 中始终为 0【英文标题】:iOS document.body.scrollTop always 0 in iframe 【发布时间】:2017-01-12 02:04:43 【问题描述】:

iframe 页面内编写代码(不是其父级。代码必须在 iframe src 页面中)

正在尝试检测 scrollTop..

我尝试过document.body.scrollTop,它适用于所有其他浏览器。

在 i-things 中的值始终为零。 RIP 史蒂夫·乔布斯

如何获取 scrollTop 以在 ipad 中滚动 iframe?他们都以 i 开头,为什么苹果让它这么难?您认为他们会喜欢 i-frames 并尝试为这些 i-frames 打上商标吗?

【问题讨论】:

【参考方案1】:

我找到的唯一解决方案是在 iframe 的父容器中使用 window.pageYOffset 并使用 postMessage 将其发送到 iframe。

这是我的解决方案:

滚动顶部的 iframe 请求->

this.sendMessage('type': "getMarginTop", 'source': selector);

容器监听消息并使用 -> pageYOffset 进行响应

window.addEventListener('message',  function (e) 
        myiframe.contentWindow.postMessage("type":"getMarginTop-success", "top": window.pageYOffset, '*'); 
);

iframe 监听消息->

window.addEventListener('message',  function (e) 
        if (e.data.type == "getMarginTop-success")
            //here the scrollTop data e.data.top
        
, false);

希望能帮到人

【讨论】:

以上是关于iOS document.body.scrollTop 在 iframe 中始终为 0的主要内容,如果未能解决你的问题,请参考以下文章

每日分享!~ 如何解决获取卷曲高度的问题,document.body.scrollTop为什么在pc端拿不到值

js的window.onscroll事件兼容各大浏览器

ScrollTop的兼容问题

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO

IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO

IO复用阻塞IO非阻塞IO同步IO异步IO