2

スクロールバーの位置を見つけるために使用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);
}
4

1 に答える 1