UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

126 lines (92 loc) 4.5 kB
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>The source code</title> <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" /> <script type="text/javascript" src="../resources/prettify/prettify.js"></script> <style type="text/css"> .highlight { display: block; background-color: #ddd; } </style> <script type="text/javascript"> function highlight() { document.getElementById(location.hash.replace(/#/, "")).className = "highlight"; } </script> </head> <body onload="prettyPrint(); highlight();"> <pre class="prettyprint lang-js">/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ Role(&#39;Siesta.Util.Role.CanCalculatePageScroll&#39;, { // also recognizes the &quot;global&quot; attribute methods : { getElForPageScroll : function (win) { win = win || this.global var doc = win.document return doc.scrollingElement || (bowser.webkit || bowser.blink || bowser.msedge ? doc.body : doc.documentElement) }, getPageScrollX : function (win) { win = win || this.global if (win.pageXOffset != null) return win.pageXOffset var scrollEl = this.getElForPageScroll() return scrollEl ? scrollEl.scrollLeft : 0 }, getPageScrollY : function (win) { win = win || this.global if (win.pageYOffset != null) return win.pageYOffset var scrollEl = this.getElForPageScroll() return scrollEl ? scrollEl.scrollTop : 0 }, viewportXtoPageX : function (x, win) { win = win || this.global var docEl = win.document.documentElement // seems the &quot;docEl.clientLeft&quot; thing is copied from jQuery, not sure what kind of // edge case it is supposed to solve return x + this.getPageScrollX(win) - docEl.clientLeft }, viewportYtoPageY : function (y, win) { win = win || this.global var docEl = win.document.documentElement // seems the &quot;docEl.clientLeft&quot; thing is copied from jQuery, not sure what kind of // edge case it is supposed to solve return y + this.getPageScrollY(win) - docEl.clientTop }, pageXtoViewportX : function (x, win) { win = win || this.global var docEl = win.document.documentElement // seems the &quot;docEl.clientLeft&quot; thing is copied from jQuery, not sure what kind of // edge case it is supposed to solve return x - this.getPageScrollX(win) + docEl.clientLeft }, pageYtoViewportY : function (y, win) { win = win || this.global var docEl = win.document.documentElement // seems the &quot;docEl.clientLeft&quot; thing is copied from jQuery, not sure what kind of // edge case it is supposed to solve return y - this.getPageScrollY(win) + docEl.clientTop }, // this method is only actual, when Siesta UI is embedded inside the iframe of the parent window // in this case we don&#39;t want the scrolling position of the parent window to change in reaction // to the Siesta tests launches / progress maintainScrollPositionDuring : function (func, scope) { var parent = window.parent var isEmbedded = Boolean(parent) var scrollLeftBefore = isEmbedded &amp;&amp; this.getPageScrollX(parent) var scrollTopBefore = isEmbedded &amp;&amp; this.getPageScrollY(parent) func.call(scope || this) // prevent scroll position change in the parent window, if Siesta UI is embedded if (isEmbedded) { var scrollEl = this.getElForPageScroll(parent) if (scrollLeftBefore !== this.getPageScrollX(parent)) scrollEl.scrollLeft = scrollLeftBefore if (scrollTopBefore !== this.getPageScrollY(parent)) scrollEl.scrollTop = scrollTopBefore } } } }) </pre> </body> </html>