如何解决window.scroll在安卓系统iFrame中不工作的问题

How can I workaround window.scroll not working in iFrame on Android

本文关键字:iFrame 系统 问题 工作 何解决 解决 scroll window      更新时间:2023-09-26

window.scrollwindow.scrollTo(其别名)似乎无法在安卓4.0.4互联网浏览器中嵌入的<iframe>上工作。其他功能(似乎)也没有,比如window.scrollBy等。我如何绕过这个限制,迫使<iframe>滚动到页面上的特定位置?

一些额外信息:

  • 解决方案不需要优雅,它可以是一个棘手的解决方案。无论如何,这都是测试代码
  • 虽然代码不需要干净,但至少应该可以使其对跨浏览器友好
  • 设备是运行Android 4.0.4原生浏览器的三星Galaxy Note
  • 框架在同一域中,因此可以在其上运行代码
  • 除了滚动之外,我希望页面尽可能保持原样
  • 当我的代码运行时,<iframe>已经完成加载

使用focus()

function scrollY(i) {
  var div = document.createElement("div");
  div.innerHTML = "<a style='position:absolute;left:0;top:" + i + "px' href='#'></a>";
  div = div.firstChild;
  document.body.appendChild(div);
  div.focus();
  div.parentNode.removeChild(div);
}

这里和这里讨论的似乎是一个已知的bug。

以下为我做了一个技巧:

  • 通过添加{overflow:hidden}关闭溢出样式
  • 调用scrollTo
  • 通过设置{overflow:scroll}打开样式