Skip to content

Commit 1946621

Browse files
committed
Merge pull request #1941 from onnoj/incoming
Added workaround for window.scrollX compat.
2 parents c0beb1c + fe66c89 commit 1946621

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

src/library_browser.js

+15-4
Original file line numberDiff line numberDiff line change
@@ -478,19 +478,30 @@ mergeInto(LibraryManager.library, {
478478
// in the coordinates.
479479
var rect = Module["canvas"].getBoundingClientRect();
480480
var x, y;
481+
482+
// Neither .scrollX or .pageXOffset are defined in a spec, but
483+
// we prefer .scrollX because it is currently in a spec draft.
484+
// (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
485+
var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
486+
var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
487+
#if ASSERTIONS
488+
// If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset
489+
// and we have no viable fallback.
490+
assert((typeof scrollX !== 'undefined') && (typeof scrollY !== 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.');
491+
#endif
481492
if (event.type == 'touchstart' ||
482493
event.type == 'touchend' ||
483494
event.type == 'touchmove') {
484495
var t = event.touches.item(0);
485496
if (t) {
486-
x = t.pageX - (window.scrollX + rect.left);
487-
y = t.pageY - (window.scrollY + rect.top);
497+
x = t.pageX - (scrollX + rect.left);
498+
y = t.pageY - (scrollY + rect.top);
488499
} else {
489500
return;
490501
}
491502
} else {
492-
x = event.pageX - (window.scrollX + rect.left);
493-
y = event.pageY - (window.scrollY + rect.top);
503+
x = event.pageX - (scrollX + rect.left);
504+
y = event.pageY - (scrollY + rect.top);
494505
}
495506

496507
// the canvas might be CSS-scaled compared to its backbuffer;

0 commit comments

Comments
 (0)