cfcfeafd42beb49af0c87bc40610eb2b1b642452.svn-base 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * JavaScript脚本实现回到页面顶部示例
  3. * @param acceleration 速度
  4. * @param stime 时间间隔 (毫秒)
  5. **/
  6. function gotoTop(acceleration,stime) {
  7. //alert("===>start");
  8. acceleration = acceleration || 0.1;
  9. stime = stime || 10;
  10. var x1 = 0;
  11. var y1 = 0;
  12. var x2 = 0;
  13. var y2 = 0;
  14. var x3 = 0;
  15. var y3 = 0;
  16. if (top.window.document.documentElement) {
  17. x1 = top.window.document.documentElement.scrollLeft || 0;
  18. y1 = top.window.document.documentElement.scrollTop || 0;
  19. }
  20. if (top.window.document.body) {
  21. x2 = top.window.document.body.scrollLeft || 0;
  22. y2 = top.window.document.body.scrollTop || 0;
  23. }
  24. var x3 = top.window.scrollX || 0;
  25. var y3 = top.window.scrollY || 0;
  26. // 滚动条到页面顶部的水平距离
  27. var x = Math.max(x1, Math.max(x2, x3));
  28. // 滚动条到页面顶部的垂直距离
  29. var y = Math.max(y1, Math.max(y2, y3));
  30. // 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
  31. var speeding = 1 + acceleration;
  32. top.window.scrollTo(Math.floor(x / speeding), Math.floor(y / speeding));
  33. // 如果距离不为零, 继续调用函数
  34. if(x > 0 || y > 0) {
  35. var run = "gotoTop(" + acceleration + ", " + stime + ")";
  36. top.window.setTimeout(run, stime);
  37. }
  38. /*console.log(x1);
  39. console.log(y1);
  40. console.log(x2);
  41. console.log(y2);
  42. console.log(x3);
  43. console.log(y3);*/
  44. //alert("===>end");
  45. }