どこでも見れるメモ帳

とあるSEの備忘録。何かあれば気軽にコメントください〜

ページ内の全てのスクロールバーを一番上に移動する


はじめに

Firefoxにて,ページ内の全てのスクロールバーを一番上に移動したい」という状況が生じたのでメモ.
方法を簡単に言うと,ページ内の全てのDOM要素についてscrollTop要素が無いかチェックし,もしあれば0を代入する.
※今回用いるevaluateメソッドは,firefox以外では使えないので注意.

やりかた

//XPathを用いて,ページ内DOM要素を全取得(ただし,返り値はイテレータ)
let xpathResult = document.evaluate("//*",document,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);

//各DOM要素を巡回し,もしscrollTopプロパティがあれば一番上に
let itr = xpathResult.iterateNext();
while(itr) {
  if(itr.scrollTop) {
    itr.scrollTop = 0;
  }
  itr = xpathResult.iterateNext();
}

evaluateにてscrollTopプロパティを持つ要素のみを取得したかったけれど,やり方が分からなかった…
もしご存知の方いらっしゃったら教えて下さいm(_ _)m