diff options
author | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
---|---|---|
committer | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
commit | 58a2577d48790c79adfd44bcfd662c980ce6cfe4 (patch) | |
tree | 523d814ea0b7b6f617fe515b186099c6e83fed72 /lib/dojo/window.js.uncompressed.js | |
parent | e470a273cf09562fb2f9c0c899002303f19c8d16 (diff) | |
parent | cc332603431102a682feda22b9cf0093a29f0176 (diff) |
Merge branch 'master' of https://github.com/gothfox/Tiny-Tiny-RSS.git
Diffstat (limited to 'lib/dojo/window.js.uncompressed.js')
-rw-r--r-- | lib/dojo/window.js.uncompressed.js | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/lib/dojo/window.js.uncompressed.js b/lib/dojo/window.js.uncompressed.js deleted file mode 100644 index 2b20b8542..000000000 --- a/lib/dojo/window.js.uncompressed.js +++ /dev/null @@ -1,168 +0,0 @@ -define("dojo/window", ["./_base/lang", "./sniff", "./_base/window", "./dom", "./dom-geometry", "./dom-style"], - function(lang, has, baseWindow, dom, geom, style){ - - // module: - // dojo/window - - var window = { - // summary: - // TODOC - - getBox: function(/*Document?*/ doc){ - // summary: - // Returns the dimensions and scroll position of the viewable area of a browser window - - doc = doc || baseWindow.doc; - - var - scrollRoot = (doc.compatMode == 'BackCompat') ? baseWindow.body(doc) : doc.documentElement, - // get scroll position - scroll = geom.docScroll(doc), // scrollRoot.scrollTop/Left should work - w, h; - - if(has("touch")){ // if(scrollbars not supported) - var uiWindow = window.get(doc); // use UI window, not dojo.global window - // on mobile, scrollRoot.clientHeight <= uiWindow.innerHeight <= scrollRoot.offsetHeight, return uiWindow.innerHeight - w = uiWindow.innerWidth || scrollRoot.clientWidth; // || scrollRoot.clientXXX probably never evaluated - h = uiWindow.innerHeight || scrollRoot.clientHeight; - }else{ - // on desktops, scrollRoot.clientHeight <= scrollRoot.offsetHeight <= uiWindow.innerHeight, return scrollRoot.clientHeight - // uiWindow.innerWidth/Height includes the scrollbar and cannot be used - w = scrollRoot.clientWidth; - h = scrollRoot.clientHeight; - } - return { - l: scroll.x, - t: scroll.y, - w: w, - h: h - }; - }, - - get: function(/*Document*/ doc){ - // summary: - // Get window object associated with document doc. - // doc: - // The document to get the associated window for. - - // In some IE versions (at least 6.0), document.parentWindow does not return a - // reference to the real window object (maybe a copy), so we must fix it as well - // We use IE specific execScript to attach the real window reference to - // document._parentWindow for later use - if(has("ie") && window !== document.parentWindow){ - /* - In IE 6, only the variable "window" can be used to connect events (others - may be only copies). - */ - doc.parentWindow.execScript("document._parentWindow = window;", "Javascript"); - //to prevent memory leak, unset it after use - //another possibility is to add an onUnload handler which seems overkill to me (liucougar) - var win = doc._parentWindow; - doc._parentWindow = null; - return win; // Window - } - - return doc.parentWindow || doc.defaultView; // Window - }, - - scrollIntoView: function(/*DomNode*/ node, /*Object?*/ pos){ - // summary: - // Scroll the passed node into view, if it is not already. - - // don't rely on node.scrollIntoView working just because the function is there - - try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method - node = dom.byId(node); - var doc = node.ownerDocument || baseWindow.doc, // TODO: why baseWindow.doc? Isn't node.ownerDocument always defined? - body = baseWindow.body(doc), - html = doc.documentElement || body.parentNode, - isIE = has("ie"), isWK = has("webkit"); - // if an untested browser, then use the native method - if((!(has("mozilla") || isIE || isWK || has("opera")) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){ - node.scrollIntoView(false); // short-circuit to native if possible - return; - } - var backCompat = doc.compatMode == 'BackCompat', - clientAreaRoot = (isIE >= 9 && "frameElement" in node.ownerDocument.parentWindow) - ? ((html.clientHeight > 0 && html.clientWidth > 0 && (body.clientHeight == 0 || body.clientWidth == 0 || body.clientHeight > html.clientHeight || body.clientWidth > html.clientWidth)) ? html : body) - : (backCompat ? body : html), - scrollRoot = isWK ? body : clientAreaRoot, - rootWidth = clientAreaRoot.clientWidth, - rootHeight = clientAreaRoot.clientHeight, - rtl = !geom.isBodyLtr(doc), - nodePos = pos || geom.position(node), - el = node.parentNode, - isFixed = function(el){ - return ((isIE <= 6 || (isIE && backCompat))? false : (style.get(el, 'position').toLowerCase() == "fixed")); - }; - if(isFixed(node)){ return; } // nothing to do - - while(el){ - if(el == body){ el = scrollRoot; } - var elPos = geom.position(el), - fixedPos = isFixed(el); - - if(el == scrollRoot){ - elPos.w = rootWidth; elPos.h = rootHeight; - if(scrollRoot == html && isIE && rtl){ elPos.x += scrollRoot.offsetWidth-elPos.w; } // IE workaround where scrollbar causes negative x - if(elPos.x < 0 || !isIE){ elPos.x = 0; } // IE can have values > 0 - if(elPos.y < 0 || !isIE){ elPos.y = 0; } - }else{ - var pb = geom.getPadBorderExtents(el); - elPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t; - var clientSize = el.clientWidth, - scrollBarSize = elPos.w - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.w = clientSize; - elPos.x += (rtl && (isIE || el.clientLeft > pb.l/*Chrome*/)) ? scrollBarSize : 0; - } - clientSize = el.clientHeight; - scrollBarSize = elPos.h - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.h = clientSize; - } - } - if(fixedPos){ // bounded by viewport, not parents - if(elPos.y < 0){ - elPos.h += elPos.y; elPos.y = 0; - } - if(elPos.x < 0){ - elPos.w += elPos.x; elPos.x = 0; - } - if(elPos.y + elPos.h > rootHeight){ - elPos.h = rootHeight - elPos.y; - } - if(elPos.x + elPos.w > rootWidth){ - elPos.w = rootWidth - elPos.x; - } - } - // calculate overflow in all 4 directions - var l = nodePos.x - elPos.x, // beyond left: < 0 - t = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0 - r = l + nodePos.w - elPos.w, // beyond right: > 0 - bot = t + nodePos.h - elPos.h; // beyond bottom: > 0 - if(r * l > 0){ - var s = Math[l < 0? "max" : "min"](l, r); - if(rtl && ((isIE == 8 && !backCompat) || isIE >= 9)){ s = -s; } - nodePos.x += el.scrollLeft; - el.scrollLeft += s; - nodePos.x -= el.scrollLeft; - } - if(bot * t > 0){ - nodePos.y += el.scrollTop; - el.scrollTop += Math[t < 0? "max" : "min"](t, bot); - nodePos.y -= el.scrollTop; - } - el = (el != scrollRoot) && !fixedPos && el.parentNode; - } - }catch(error){ - console.error('scrollIntoView: ' + error); - node.scrollIntoView(false); - } - } - }; - - 1 && lang.setObject("dojo.window", window); - - return window; -}); |