document.elementFromPoint(-1, 0) 在滚动条在左侧时返回根元素。
var scrollbarInfo = (function() {
var body = document.body;
var styleAttr = body.getAttribute("style") || "";
body.setAttribute("style", styleAttr + ";overflow-y:scroll!important");
var outer = body.appendChild(document.createElement("div"));
outer.setAttribute("style", "position:fixed;overflow:scroll");
var inner = outer.appendChild(document.createElement("div"));;
try {
return {
width: outer.offsetWidth - inner.offsetWidth,
outerPosition: document.elementFromPoint(-1, 0) ? "left" : "right",
innerPosition: outer.getBoundingClientRect().left < inner.getBoundingClientRect().left ? "left" : "right",
};
} finally {
body.setAttribute("style", styleAttr);
body.removeChild(outer);
}
})();
IE / Edge:
{outerPosition: "left", innerPosition: "left", width: 12}
Chrome / Firefox:
{outerPosition: "right", innerPosition: "left", width: 17}
安卓 / iOS:
{outerPosition: "right", innerPosition: "right", width: 0}
MacOS Safari:
{outerPosition: "right", innerPosition: "right", width: 0}
*{direction:rtl}
这样的东西。 - Observer