dom_helper.js 966 B

12345678910111213141516171819202122232425262728
  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. }