【问题标题】:Vertical scrolling does not work with embedded iframe, however horizontal works ok (without jquery)垂直滚动不适用于嵌入式 iframe,但水平滚动正常(没有 jquery)
【发布时间】:2023-04-10 14:47:01
【问题描述】:

使用动态添加的 iframe 时,我无法垂直滚动。横向工作正常。我已经看到了一些问题和答案,但是,它们都不适合我。 我也不想使用 jquery,我确信这可以通过使用 scrollTo 和 scrollBy 来完成。 完成特定操作后,我想滚动到底部。

var ifrm = document.createElement("iframe"); 
   var url = <PAGE>;
   ifrm.setAttribute("src", url);
   ifrm.style.width = 1280 +"px";
   ifrm.style.height = 1720 +"px"; //for testing, hardcoded               
   document.body.appendChild(ifrm);

   window.scrollTo(0, 500);

当我把 window.scrollTo(500, 500);一切正常,页面向右滚动 500。 有人在我的代码中看到任何问题吗?

这是我的例子:http://jsfiddle.net/aLvgx/5/

更新 1:在 createElement 中将“my_frame”更改为“iframe”。复制代码错误。

更新 2:当我在 chrome 中启动此页面(代码:http://pastebin.com/dCRQkQj9)时,我得到以下值: H: 947 W: 1861 可以自动横向滚动,纵向不可以。

【问题讨论】:

  • 请在不最大化浏览器窗口的情况下进行检查,我的意思是检查一个小的浏览器窗口,以便您的内容高度应该大于窗口.. 然后它才能滚动 y 轴
  • 我添加了更新 2,我的内容的大小比那个窗口大。还是一样(如果我理解正确的话)。我也检查过没有最大化,但没有成功。

标签: javascript html iframe scroll


【解决方案1】:

您用作 iframe 源的链接似乎在其父级上触发了某种滚动事件。

如果你等待它完成然后运行你的代码来滚动,它会工作(有点)。

在此处查看修改后的小提琴:http://jsfiddle.net/aLvgx/7

基本上,它只是有一个围绕滚动的超时函数:

setTimeout(function() { window.scrollTo(100, 1500); },1000);

【讨论】:

  • 是的,我已经看到并更改了,但仍然无法正常工作。我会更新我的问题。
  • 是的,你是对的。看起来 iframe 正在调整大小?你认为这可能与adapt=auto 选项有关吗?我尝试从链接中删除它,但它仍然调整大小。
  • 如果您等待 iframe 停止滚动父级并在超时中包装滚动功能,它会起作用。像这样:jsfiddle.net/aLvgx/7
  • 很好,超时是一个解决方案。请添加答案,以便我接受 :) 谢谢,我不敢相信我错过了调整大小。
  • 谢谢,我在上面修改了我的答案。天哪,太兴奋了,我在 stackoverflow 上的第一个被接受的答案;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 2016-05-28
  • 2014-05-05
  • 2021-11-13
  • 1970-01-01
  • 2013-05-22
相关资源
最近更新 更多