2012-12-10 36 views
0

我已經根據WinJS HTML scrolling, panning and zooming sample設置了一些平移內容。當我的滾動內容的滾動位置改變時,我想要一個事件監聽器。在WinJS HTML5/JS Windows Store應用程序中獲取平移內容的滾動偏移量?

但是,由於滾動功能是使用CSS屬性添加的,而不是指定data-win-control,所以很難判斷是否有一個對象的屬性可以監視,以便在滾動位置更改時進行更新。文檔here似乎意味着沒有這樣的對象暴露給JS:

滾動控件爲用戶提供平移或滾動視圖的幫助。它被暴露在使用JavaScript開發人員通過層疊樣式表設計時間(CSS)僅

我一直在試圖偵聽div中DOMAttrModified 事件包含滾動內容(與-ms-scroll-snap-type: mandatory & overflow-x: auto;的Windows商店應用設置),但當滾動位置改變時它似乎不會觸發。

當通過CSS設置的平移內容的滾動偏移量發生變化時,是否可以爲通知設置事件偵聽器?我試過幾個黑客(包括使用.offset()將項目添加到項目&),但是我使用的任何方法都可以看到項目的位置不受捲動偏移(頁面的基本狀態,因爲它是)的影響。滾動時

+0

我不知道這個WinJS的東西,但你滾動哪個元素?像div(和窗口)這樣的常規元素在滾動時觸發'scroll'事件,並且可以檢查他們的'scrollTop'和'scrollLeft'屬性。 – bfavaretto

+0

嘿,我覺得那樣做了!發佈這個答案,我可以接受它;) –

+0

很高興知道它的工作!只是將其添加爲答案,並提供了一些有用的文檔鏈接。 – bfavaretto

回答

3

<div>(以及window)定期元素觸發一個事件scroll,和它們的scrollTopscrollLeft屬性將指示在x軸和y軸的當前的滾動位置。 scrollHeightscrollWidth屬性也是有用的,它給出了內容的寬度/高度(包括剪切的部分)。

+2

很好的答案。我只想補充說,您可以在調試模式下運行您的應用程序,然後查看Visual Studio中的DOM Explorer,並查看您的控件成爲原生HTML元素的內容。他們中的大多數都是由div元素組成的。您可以找到正確的div元素,並查看它上面有什麼類(它將以「win-」開頭),然後檢測滾動位置並將滾動事件放在該元素上。祝你好運! –