我在页面中间有一个包含iFrame的父页面(同一个域,可以访问两者)。我的iFrame代码如下所示:
<iframe name="Survey" onload="parent.location='https://www.example.com/ParentPage#SurveyTop';" scrolling="no" src="https://www.example.com/ChildPage" width="100%" id="iFrameResizer0">
iFrame可能会变得很高,所以我在iFrame标签中有onload命令,每次刷新/加载iFrame时页面都会自动返回到iFrame的顶部。
问题是,在第一次加载父页面时,它也会立即向下滚动到iFrame的顶部,因为iFrame的内容会在父页面之后加载一两秒。因此,访问者永远不会在iFrame上方看到所有重要的页面名称/介绍/英雄形象。
是否有一些javascript,我最初可以在页面顶部显示父页面,但是只要刷新iFrame中的内容,它就会像现在一样滚动到iFrame的顶部?
我尝试在iFrame之后添加各种方法javascript,认为它会加载并滚动到iFrame,但如果页面滚动回顶部,但它从未起作用。例如:
document.body.scrollTop = document.documentElement.scrollTop = 0;
或
window.scrollTo(x-coord, y-coord);
我也尝试过三秒钟但它仍然没有滚动到顶部。 (我的脚本很可怕)。让页面跳到iFrame然后回到顶部是不理想的,但它只会在第一次发生,这是我愿意的妥协!谢谢!
答案 0 :(得分:1)
当你说你&#34;尝试对它进行三秒钟的延迟时,你使用了什么代码?然后在你的评论中,你会问如何制造延迟......我们不清楚你尝试过哪种方法无效。无论如何,要在Javascript执行中添加3秒的延迟,使用的标准方法是window.setTimeout(function(){YOURCODE;}, 3000);
。正如您所指出的,这将是一种妥协,而不是您想要的解决方案。
更好的方法是在父窗口上设置一个onload处理程序,它将设置iFrame的onload处理程序:window.addEventListener("load", function(event) {YOURCODE;}, false);
。在处理程序的代码中,您可以使用window.frames["iFrameResizer0"]
引用iFrame。
因为iFrame onload处理程序将在父页面和iFrame加载后设置,所以iFrame onload代码只会在重新加载iFrame时运行,而不是在父项的第一次加载时运行,以解决您的问题。