【发布时间】:2016-01-05 02:08:05
【问题描述】:
我在jsfiddle 上摆弄着,发现了一个潜在的问题。在小提琴中,如果站点嵌入在 iframe 中(它位于 jsfiddle 上),我有一个记录器设置来跟踪滚动的位置。但是,我需要能够使用 javascript 检测我使用的哪个值适合在所有浏览器的 iframe 中跟踪滚动位置。我使用了这些值:
window.scrollTop
document.documentElement.scrollTop
document.body.scrollTop
小提琴的js:
window.addEventListener("scroll",
function() {
console.log(
"window:" + window.scrollTop +
"; documentElement:" + document.documentElement.scrollTop +
"; body:"+ document.body.scrollTop
);
}
);
小提琴的 CSS:
html{ height : 300% }
使用 Chrome,我得到类似于以下内容的日志:
window:undefined; documentElement:0 (always 0); body:[some number] (variable number-actual scroll)
注意:为了响应 charlieftl 的 cmets,我需要编写一个脚本来检测我列出的三个值中的哪一个适合跟踪滚动位置。
此外,脚本的目的是根据网站是否为 iframed(嵌入式)来获得适当的滚动位置。当它不是适当的值时是 window.scrollTop,但在 iframe 中它似乎是 document.body.scrollTop。另外,我需要知道什么时候适合使用 document.documentElement.scrollTop。
注意:欢迎使用 jQuery 解决方案,但首选原生 javascript。
【问题讨论】:
-
完全不清楚 iframe 的目标是什么或问题是什么
-
@charlietfl 解释一下。我问我如何检测使用哪个值。有什么困惑?
-
@charlietfl 真的吗?是这样吗?那为什么窗口会返回
undefined? -
@espascarello 我认为你不明白。当网站被 iframed/嵌入时,我试图获取 iframe 的滚动位置。我使用
window,因为我不确定 iframe 是否会被视为窗口。 -
@charlietfl 我喜欢我女儿比你回答得更快的方式。你们那些声望很高的人应该停止评论并开始回答,否则你就会被打败
标签: javascript jquery iframe cross-browser