2013-04-17 128 views
2

我用window.pageYOffset找到滾動條的位置(在Firefox正常工作),但它是在IE10Internet Explorer的10和top.window.pageYOffset

總是不確定我已經嘗試使用:

window.pageYOffset // undefined 
document.body.scrollTop // always 0 
document.documentElement.scrolltop // undefined 
top.window.scrollY // undefined 

這是IE10的一個已知問題?

這是啓用兼容模式。沒有它,pageYOffset按預期工作。我們必須使用兼容模式,因爲這是我們客戶的要求

代碼顯示一個calander,它需要在文本框中顯示。當用戶在頁面上滾動它的位置將發生改變:用代碼已更新 :

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); 
} 
+0

你試過'window.top.scrollY'嗎? – andlrc

+0

葉剛試過,仍然沒有定義。感謝您的回覆:) – Alex

+1

'window.pageYOffset'適用於IE10。 – Christoph

回答

2

可以使用document.documentElement.scrollTop的IE瀏覽器。您的示例中沒有將scrollTop中的T大寫。

+0

我會給這個嘗試 – Alex

+1

啊,我已經擁有它,仍然沒有工作 – Alex

+0

你能提供一個鏈接到您的網頁或jsfiddle演示?它應該正常工作,所以也許別的東西正在阻礙。您可以通過在任何頁面上打開F12開發工具並在控制檯中運行它來確認它。 –