aui-scroll.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * aui-scroll.js
  3. * @author 流浪男
  4. * @todo more things to abstract, e.g. Loading css etc.
  5. * Licensed under the MIT license.
  6. * http://www.opensource.org/licenses/mit-license.php
  7. */
  8. (function(window) {
  9. 'use strict';
  10. var isToBottom = false,isMoved = false;
  11. var auiScroll = function (params,callback) {
  12. this.extend(this.params, params);
  13. this._init(params,callback);
  14. }
  15. auiScroll.prototype = {
  16. params: {
  17. listren:false,
  18. distance: 100
  19. },
  20. _init : function(params,callback) {
  21. var self = this;
  22. if(self.params.listen){
  23. document.body.addEventListener("touchmove", function(e){
  24. self.scroll(callback);
  25. });
  26. document.body.addEventListener("touchend", function(e){
  27. self.scroll(callback);
  28. });
  29. }
  30. window.onscroll = function(){
  31. self.scroll(callback);
  32. }
  33. },
  34. scroll : function (callback) {
  35. var self = this;
  36. var clientHeight = document.documentElement.scrollTop === 0 ? document.body.clientHeight : document.documentElement.clientHeight;
  37. var scrollTop = document.documentElement.scrollTop === 0 ? document.body.scrollTop : document.documentElement.scrollTop;
  38. var scrollHeight = document.documentElement.scrollTop === 0 ? document.body.scrollHeight : document.documentElement.scrollHeight;
  39. if (scrollHeight-scrollTop-self.params.distance <= window.innerHeight) {
  40. isToBottom = true;
  41. if(isToBottom){
  42. callback({
  43. "scrollTop":scrollTop,
  44. "isToBottom":true
  45. })
  46. }
  47. }else{
  48. isToBottom = false;
  49. callback({
  50. "scrollTop":scrollTop,
  51. "isToBottom":false
  52. })
  53. }
  54. },
  55. extend: function(a, b) {
  56. for (var key in b) {
  57. if (b.hasOwnProperty(key)) {
  58. a[key] = b[key];
  59. }
  60. }
  61. return a;
  62. }
  63. }
  64. window.auiScroll = auiScroll;
  65. })(window);