diff options
| author | ilya | 2009-11-04 22:50:10 -0800 |
|---|---|---|
| committer | ilya | 2009-11-04 23:11:11 -0800 |
| commit | 3997d2a904c07cc98281972f0c852aa9c3b3baea (patch) | |
| tree | 27c3253fdf55096c9a76aa04cac45f9cbdc9d17d | |
| parent | 0d8394d9b46f99bd94aeeefb4f11ecda982327aa (diff) | |
| download | vimium-3997d2a904c07cc98281972f0c852aa9c3b3baea.tar.bz2 | |
Add a workaround for a chrome/webkit bug that gives back bad scrollTop data:
http://code.google.com/p/chromium/issues/detail?id=2891
There may still be another bug or some trickery needed to get proper scrollTop values all the time.
| -rw-r--r-- | vimiumFrontend.js | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js index cb64361e..141a0c86 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -31,10 +31,21 @@ chrome.extension.onConnect.addListener(function (port, name) { else if (port.name == "getScrollPosition") { port.onMessage.addListener(function (args) { + + // These conditionals are necessary due to the following chrome/webkit bug: + // http://code.google.com/p/chromium/issues/detail?id=2891 + // + // There may be another bug or some javascript trickery necessary because scrollTop occasionally returns + // 3 or 108 on some sites (cnn.com, nytimes.com for example). + // + // TODO(ilya): Is this actually also necessary for scrollLeft? + var scrollTop = document.documentElement.scrollTop >= document.body.scrollTop ? document.documentElement.scrollTop : + document.body.scrollTop; + var scrollLeft = document.documentElement.scrollLeft >= document.body.scrollLeft ? document.documentElement.scrollLeft : + document.body.scrollLeft; var scrollPort = chrome.extension.connect({name: "returnScrollPosition"}); - scrollPort.postMessage({ scrollTop: document.body.scrollTop, - scrollLeft: document.body.scrollLeft, - currentTab: args.currentTab }); + scrollPort.postMessage({ scrollTop: scrollTop, scrollLeft: scrollLeft, currentTab: args.currentTab }); + }); } else if (port.name == "setScrollPosition") |
