スクロールバーの幅を取得するコード
JavaScriptでスクロールバーの幅を取得したいと思ったのでさくっと書いてみた。
スクロールバーが表示されるiframeを生成して、offset〜を取得することで、iframeサイズとの差がスクロールバーの幅となることを利用して計算します。
IE7ではDOMの構築が終わっておらず正常に計算できませんが、僕はFxとChromeでしか使わないので、問題なしです。
function scrollBarSize() { var W = 1000, H = 1000; var iframe = document.createElement("iframe"); iframe.frameBorder = 0; iframe.width = W; iframe.height = H; with (iframe.style) { position = "absolute"; top = "0px"; left = "-" + (W * 2) + "px"; } document.body.appendChild(iframe); var win = iframe.contentWindow, doc = win.document; doc.open(); doc.write('<!DOCTYPE html><html><head><style type="text/css">html,body,div{margin:0;padding:0;}div{width:'+(W*2)+'px;height:'+(H*2)+'px;}</style></head><body><div></div></body></html>'); doc.close(); var res = { width: W - doc.documentElement.clientHeight, height: H - doc.documentElement.clientWidth }; document.body.removeChild(iframe); return res; }