Guest User

Untitled

a guest
Jun 22nd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. /**
  2. * fix在ios中页面露底问题
  3. * @param {String or Dom} el touch时需要阻止露底的dom元素
  4. */
  5. function stopScrollOver(el) {
  6. if (!(/(iPhone|iPad|iPod|iOS)/i.test(window.navigator.userAgent))) {
  7. return;
  8. }
  9. var content = typeof el == "string"
  10. ? document.querySelector(el)
  11. : el;
  12. var startY;
  13. if (!content) {
  14. return;
  15. }
  16. content
  17. .addEventListener("touchstart", function (e) {
  18. startY = e.touches[0].clientY;
  19. });
  20. content.addEventListener("touchmove", function (e) {
  21. // 高位表示向上滚动 底位表示向下滚动 1容许 0禁止
  22. var status = "11";
  23. var ele = this;
  24. var currentY = e.touches[0].clientY;
  25. if (ele.scrollTop === 0) {
  26. // 如果内容小于容器则同时禁止上下滚动
  27. status = ele.offsetHeight >= ele.scrollHeight
  28. ? "00"
  29. : "01";
  30. } else if (ele.scrollTop + ele.offsetHeight >= ele.scrollHeight) {
  31. // 已经滚到底部了只能向上滚动
  32. status = "10";
  33. }
  34.  
  35. if (status != "11") {
  36. // 判断当前的滚动方向
  37. var direction = currentY - startY > 0
  38. ? "10"
  39. : "01";
  40. // 操作方向和当前允许状态求与运算,运算结果为0,就说明不允许该方向滚动,则禁止默认事件,阻止滚动
  41. if (!(parseInt(status, 2) & parseInt(direction, 2))) {
  42. e.preventDefault();
  43. e.stopPropagation();
  44. return;
  45. }
  46. }
  47. });
  48. }
  49. export default stopScrollOver;
Add Comment
Please, Sign In to add comment