Javascript 2第页上的window.parent.onscroll调用不起作用
我有一个HTML页面,里面有两个iFrame。我希望每个iframe显示父窗口的Y滚动偏移量。一个iframe在页面加载时工作,另一个不工作 父HTML页面只嵌入了iframe。以下是在iframe中运行的代码:Javascript 2第页上的window.parent.onscroll调用不起作用,javascript,iframe,scroll,Javascript,Iframe,Scroll,我有一个HTML页面,里面有两个iFrame。我希望每个iframe显示父窗口的Y滚动偏移量。一个iframe在页面加载时工作,另一个不工作 父HTML页面只嵌入了iframe。以下是在iframe中运行的代码: function run(){ document.write("<div id='scrollY' style='float:left;'></div><br>"); scrollY = 'no'; document.getE
function run(){
document.write("<div id='scrollY' style='float:left;'></div><br>");
scrollY = 'no';
document.getElementById("scrollY").innerHTML = scrollY;
window.parent.onscroll = function(){
scrollY = window.parent.pageYOffset;
document.getElementById("scrollY").innerHTML = scrollY;
}
}
run();
我只能调用
window.parent.onscroll
一次吗?这对我来说似乎不正确。发生这种情况是因为在两个帧中,window.parent
引用相同的window
对象,并且您在同一对象上设置了两次onscroll
属性/事件。这意味着,第二次设置window.parent.onscroll
属性时,实际上是在覆盖第一次设置事件的尝试,并用第二帧的window.document
对象覆盖它,这就是为什么它只更新第二帧中元素的内容
要解决此问题,只需使用addEventListener
而不是onscroll
:
函数运行(){
文件。写(“
”);
滚动='否';
document.getElementById(“scrollY”).innerHTML=scrollY;
window.parent.addEventListener('scroll',function(){
scrollY=window.parent.pageYOffset;
document.getElementById(“scrollY”).innerHTML=scrollY;
});
}
addEventListener
允许您为同一元素设置多个相同类型的事件,而.onstuff
监听器不允许
iframe1 = 100
iframe2 = no
function run() {
document.write("<div id='scrollY' style='float:left;'></div><br>");
scrollY = 'no';
document.getElementById("scrollY").innerHTML = scrollY;
window.parent.addEventListener('scroll', function() {
scrollY = window.parent.pageYOffset;
document.getElementById("scrollY").innerHTML = scrollY;
});
}