autoloadpage.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. [Discuz!] (C)2001-2099 Comsenz Inc.
  3. This is NOT a freeware, use is subject to license terms
  4. $Id: autoloadpage.js 33246 2013-05-09 02:07:17Z kamichen $
  5. */
  6. (function() {
  7. var autopbn = $('autopbn');
  8. var nextpageurl = autopbn.getAttribute('rel').valueOf();
  9. var curpage = parseInt(autopbn.getAttribute('curpage').valueOf());
  10. var totalpage = parseInt(autopbn.getAttribute('totalpage').valueOf());
  11. var picstyle = parseInt(autopbn.getAttribute('picstyle').valueOf());
  12. var forumdefstyle = parseInt(autopbn.getAttribute('forumdefstyle').valueOf());
  13. picstyle = picstyle && !forumdefstyle;
  14. var autopagenum = 0;
  15. var maxpage = (curpage + autopagenum) > totalpage ? totalpage : (curpage + autopagenum);
  16. var loadstatus = 0;
  17. autopbn.onclick = function() {
  18. var oldloadstatus = loadstatus;
  19. loadstatus = 2;
  20. autopbn.innerHTML = '正在加载, 请稍后...';
  21. getnextpagecontent();
  22. loadstatus = oldloadstatus;
  23. };
  24. if(autopagenum > 0) {
  25. window.onscroll = function () {
  26. var curtop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  27. if(curtop + document.documentElement.clientHeight + 500 >= document.documentElement.scrollHeight && !loadstatus) {
  28. loadstatus = 1;
  29. autopbn.innerHTML = '正在加载, 请稍后...';
  30. setTimeout(getnextpagecontent, 1000);
  31. }
  32. };
  33. }
  34. function getnextpagecontent() {
  35. if(curpage + 1 > totalpage) {
  36. window.onscroll = null;
  37. autopbn.style.display = 'none';
  38. return;
  39. }
  40. if(loadstatus != 2 && curpage + 1 > maxpage) {
  41. autopbn.innerHTML = '下一页 »';
  42. if(curpage + 1 > maxpage) {
  43. window.onscroll = null;
  44. }
  45. return;
  46. }
  47. curpage++;
  48. var url = nextpageurl + '&t=' + parseInt((+new Date()/1000)/(Math.random()*1000));
  49. var x = new Ajax('HTML');
  50. x.get(url, function (s) {
  51. s = s.replace(/\n|\r/g, '');
  52. if(s.indexOf("id=\"autopbn\"") == -1) {
  53. $("autopbn").style.display = "none";
  54. window.onscroll = null;
  55. }
  56. if(!picstyle) {
  57. var tableobj = $('threadlisttableid');
  58. var nexts = s.match(/\<tbody id="normalthread_(\d+)"\>(.+?)\<\/tbody>/g);
  59. for(i in nexts) {
  60. if(i == 'index' || i == 'lastIndex') {
  61. continue;
  62. }
  63. var insertid = nexts[i].match(/<tbody id="normalthread_(\d+)"\>/);
  64. if(!$('normalthread_' + insertid[1])) {
  65. var newbody = document.createElement('tbody');
  66. tableobj.appendChild(newbody);
  67. var div = document.createElement('div');
  68. div.innerHTML = '<table>' + nexts[i] + '</table>';
  69. tableobj.replaceChild(div.childNodes[0].childNodes[0], tableobj.lastChild);
  70. }
  71. }
  72. } else {
  73. var nexts = s.match(/\<li style="width:\d+px;" id="picstylethread_(\d+)"\>(.+?)\<\/li\>/g);
  74. for(i in nexts) {
  75. var insertid = nexts[i].match(/id="picstylethread_(\d+)"\>/);
  76. if(!$('picstylethread_' + insertid[1])) {
  77. $('threadlist_picstyle').innerHTML += nexts[i];
  78. }
  79. }
  80. }
  81. var pageinfo = s.match(/\<span id="fd_page_bottom"\>(.+?)\<\/span\>/);
  82. nextpageurl = nextpageurl.replace(/&page=\d+/, '&page=' + (curpage + 1));
  83. $('fd_page_bottom').innerHTML = pageinfo[1];
  84. if(curpage + 1 > totalpage) {
  85. autopbn.style.display = 'none';
  86. } else {
  87. autopbn.innerHTML = '下一页 &raquo;';
  88. }
  89. loadstatus = 0;
  90. });
  91. }
  92. })();