【发布时间】:2013-04-10 08:17:07
【问题描述】:
我使用window.pageYOffset 来查找滚动条的位置(在 Firefox 中可以正常工作),但在 IE10 中始终未定义
我尝试过使用:
window.pageYOffset // undefined
document.body.scrollTop // always 0
document.documentElement.scrolltop // undefined
top.window.scrollY // undefined
这是 IE10 的已知问题吗?
这是启用了兼容模式。没有它, pageYOffset 将按预期工作。我们必须使用兼容模式,因为这是我们客户的要求
代码显示了一个日历,需要在文本框上显示。当用户在页面上滚动时,它的位置会改变: 用代码更新:
function showCalendar(e, datePicker) {
top.calendarReturnFunc = function(value, controlId) {
getDatePicker(controlId).dateBox.hasDate = "True";
dateChosen(value, controlId, true);
};
top.datePickerActive = function() { return true; };
var itop = top.window.screenTop != undefined ? top.window.screenTop : parseInt(top.window.screenY) + parseInt(130);
var ileft = top.window.screenLeft != undefined ? top.window.screenLeft : parseInt(top.window.screenX);
var x = e.screenX - parseInt(ileft);
var y;
if (typeof top.window.pageYOffset === "undefined") {
y = (e.screenY - parseInt(itop) - datePicker.yOffset) + document.documentElement.scrollTop; //IE10?...
}
else {
y = (e.screenY - parseInt(itop) - datePicker.yOffset) + top.window.pageYOffset; //works fine in firefox
}
if (datePicker.alignLeft) {
x -= 180;
}
if (!datePicker.alignBottom) {
y -= 178;
}
_calendar.style.left = x + "px";
_calendar.style.top = y + "px";
_calendar.style.display = "block";
_calendar.datePicker = datePicker;
_calendar.callingFrame = this;
_calendar.src = datePicker.calendarUrl + "&Date=" + escape(datePicker.dateBox.value);
}
【问题讨论】:
-
你试过
window.top.scrollY吗? -
是的,刚刚尝试过,仍然未定义。谢谢你的回复:)
-
window.pageYOffset在 IE10 中为我工作。 -
^ 对我来说它总是设置为 '0' 这是不正确的
-
我可以补充一下,这是启用了兼容模式(我们必须使用它,因为这是我们的设置方式)
标签: javascript browser internet-explorer-10