【问题标题】:Internet explorer 10 and top.window.pageYOffsetInternet Explorer 10 和 top.window.pageYOffset
【发布时间】: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


【解决方案1】:

您可以在 IE 中使用document.documentElement.scrollTop。您没有将示例中 scrollTop 中的 T 大写。

【讨论】:

  • 你能提供一个链接到你的页面或一个 jsfiddle 演示吗?它应该可以正常工作,所以可能有其他东西妨碍了它。您可以通过在任何页面上打开 F12 开发工具并在控制台中运行来确认它。
  • 我已经提供了我的代码,请查看我正在计算值 y 的行
  • 我的意思是我们可以运行代码的链接。将使调试变得更加容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2013-12-01
  • 2015-11-01
  • 2017-09-24
  • 2013-07-09
  • 2013-11-11
  • 1970-01-01
相关资源
最近更新 更多