4
0

dom_helper.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. class DomHelper {
  2. static isVisible(element) {
  3. return element.offsetParent !== null;
  4. }
  5. static openNewTab(url) {
  6. const win = window.open("");
  7. win.opener = null;
  8. win.location = url;
  9. win.focus();
  10. }
  11. static scrollPageTo(element, evenIfOnScreen) {
  12. const windowScrollPosition = window.pageYOffset;
  13. const windowHeight = document.documentElement.clientHeight;
  14. const viewportPosition = windowScrollPosition + windowHeight;
  15. const itemBottomPosition = element.offsetTop + element.offsetHeight;
  16. if (evenIfOnScreen || viewportPosition - itemBottomPosition < 0 || viewportPosition - element.offsetTop > windowHeight) {
  17. window.scrollTo(0, element.offsetTop - 10);
  18. }
  19. }
  20. static getVisibleElements(selector) {
  21. const elements = document.querySelectorAll(selector);
  22. return [...elements].filter((element) => this.isVisible(element));
  23. }
  24. static hasPassiveEventListenerOption() {
  25. var passiveSupported = false;
  26. try {
  27. var options = Object.defineProperty({}, "passive", {
  28. get: function() {
  29. passiveSupported = true;
  30. }
  31. });
  32. window.addEventListener("test", options, options);
  33. window.removeEventListener("test", options, options);
  34. } catch(err) {
  35. passiveSupported = false;
  36. }
  37. return passiveSupported;
  38. }
  39. }