芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/rentandbuyrealty.com/mobile/lib/gsap/src/uncompressed/plugins/ScrollToPlugin.js
/*! * VERSION: 1.7.3 * DATE: 2014-01-14 * UPDATES AND DOCS AT: http://www.greensock.com * * @license Copyright (c) 2008-2014, GreenSock. All rights reserved. * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for * Club GreenSock members, the software agreement that was issued with your membership. * * @author: Jack Doyle, jack@greensock.com **/ (window._gsQueue || (window._gsQueue = [])).push( function() { "use strict"; var _doc = document.documentElement, _window = window, _max = function(element, axis) { var dim = (axis === "x") ? "Width" : "Height", scroll = "scroll" + dim, client = "client" + dim, body = document.body; return (element === _window || element === _doc || element === body) ? Math.max(_doc[scroll], body[scroll]) - (_window["inner" + dim] || Math.max(_doc[client], body[client])) : element[scroll] - element["offset" + dim]; }, ScrollToPlugin = window._gsDefine.plugin({ propName: "scrollTo", API: 2, version:"1.7.3", //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run. init: function(target, value, tween) { this._wdw = (target === _window); this._target = target; this._tween = tween; if (typeof(value) !== "object") { value = {y:value}; //if we don't receive an object as the parameter, assume the user intends "y". } this._autoKill = (value.autoKill !== false); this.x = this.xPrev = this.getX(); this.y = this.yPrev = this.getY(); if (value.x != null) { this._addTween(this, "x", this.x, (value.x === "max") ? _max(target, "x") : value.x, "scrollTo_x", true); this._overwriteProps.push("scrollTo_x"); } else { this.skipX = true; } if (value.y != null) { this._addTween(this, "y", this.y, (value.y === "max") ? _max(target, "y") : value.y, "scrollTo_y", true); this._overwriteProps.push("scrollTo_y"); } else { this.skipY = true; } return true; }, //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.) set: function(v) { this._super.setRatio.call(this, v); var x = (this._wdw || !this.skipX) ? this.getX() : this.xPrev, y = (this._wdw || !this.skipY) ? this.getY() : this.yPrev, yDif = y - this.yPrev, xDif = x - this.xPrev; if (this._autoKill) { //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match. if (!this.skipX && (xDif > 7 || xDif < -7) && x < _max(this._target, "x")) { this.skipX = true; //if the user scrolls separately, we should stop tweening! } if (!this.skipY && (yDif > 7 || yDif < -7) && y < _max(this._target, "y")) { this.skipY = true; //if the user scrolls separately, we should stop tweening! } if (this.skipX && this.skipY) { this._tween.kill(); } } if (this._wdw) { _window.scrollTo((!this.skipX) ? this.x : x, (!this.skipY) ? this.y : y); } else { if (!this.skipY) { this._target.scrollTop = this.y; } if (!this.skipX) { this._target.scrollLeft = this.x; } } this.xPrev = this.x; this.yPrev = this.y; } }), p = ScrollToPlugin.prototype; ScrollToPlugin.max = _max; p.getX = function() { return (!this._wdw) ? this._target.scrollLeft : (_window.pageXOffset != null) ? _window.pageXOffset : (_doc.scrollLeft != null) ? _doc.scrollLeft : document.body.scrollLeft; }; p.getY = function() { return (!this._wdw) ? this._target.scrollTop : (_window.pageYOffset != null) ? _window.pageYOffset : (_doc.scrollTop != null) ? _doc.scrollTop : document.body.scrollTop; }; p._kill = function(lookup) { if (lookup.scrollTo_x) { this.skipX = true; } if (lookup.scrollTo_y) { this.skipY = true; } return this._super._kill.call(this, lookup); }; }); if (window._gsDefine) { window._gsQueue.pop()(); }