visibilityjs 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.6.2 (Pioneer 4, american sun)
2
+ * Decrease files size (by compressible code and UnglifyJS 2).
3
+ * Remove unnecessary vendor prefixes from fallback.
4
+
1
5
  == 0.6.1 (Vanguard 2, weather)
2
6
  * Remove unnecessary vendor prefixes.
3
7
 
data/README.md CHANGED
@@ -21,7 +21,7 @@ actually supported in the browser as, if it does not, the library will just
21
21
  assume that the page is visible all the time, and your logic will still work
22
22
  correctly, albeit less effective in some cases.
23
23
 
24
- Page Visibility API is natively supported by Google Chrome 13, Firefox 10,
24
+ Page Visibility API is [natively supported] by Google Chrome 13, Firefox 10,
25
25
  Opera 12.10 and IE 10. For old browsers you can use `lib/visibility.fallback.js`
26
26
  with focus/blur hack (note that this hack have issue, that document become
27
27
  to be hidden, when browser just lose focus, but still visible for user).
@@ -31,6 +31,7 @@ Sponsored by [Evil Martians].
31
31
  [Page Visibility API]: http://www.w3.org/TR/2011/WD-page-visibility-20110602/
32
32
  [prerendering]: http://code.google.com/chrome/whitepapers/prerender.html
33
33
  [MozVisibility]: https://github.com/private-face/mozvisibility
34
+ [natively supported]: http://caniuse.com/#feat=pagevisibility
34
35
  [Evil Martians]: http://evilmartians.com/
35
36
 
36
37
  ## Translations
@@ -296,7 +297,7 @@ For Ruby on Rails you can use gem for Assets Pipeline.
296
297
  If you don’t use any assets packaging manager use [CDNJS]. Add to your site:
297
298
 
298
299
  ```html
299
- <script src="//cdnjs.cloudflare.com/ajax/libs/visibility.js/0.6.1/visibility.min.js"></script>
300
+ <script src="//cdnjs.cloudflare.com/ajax/libs/visibility.js/0.6.2/visibility.min.js"></script>
300
301
  ```
301
302
 
302
303
  [CDNJS]: http://cdnjs.com/
@@ -322,14 +323,20 @@ If you need just a files, you can take already minified packages from
322
323
  npm install
323
324
  ```
324
325
 
325
- 3. Run test server:
326
+ 3. Run all tests:
326
327
 
327
328
  ```sh
328
329
  ./node_modules/.bin/cake test
329
330
  ```
330
331
 
331
- 4. Open tests in browser: [localhost:8000].
332
- 5. Also you can see real usage example in integration test
332
+ 4. Run test server, to check code in real browsers:
333
+
334
+ ```sh
335
+ ./node_modules/.bin/cake server
336
+ ```
337
+
338
+ 5. Open tests in browser: [localhost:8000].
339
+ 6. Also you can see real usage example in integration test
333
340
  `test/integration.html`.
334
341
 
335
342
  [localhost:8000]: http://localhost:8000
@@ -16,18 +16,18 @@
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- ;(function () {
19
+ ;(function (undefined) {
20
20
  "use strict";
21
21
 
22
22
  var defined = function (variable) {
23
- return ('undefined' != typeof(variable));
23
+ return (variable != undefined);
24
24
  };
25
25
 
26
26
  // Visibility.js allow you to know, that your web page is in the background
27
27
  // tab and thus not visible to the user. This library is wrap under
28
28
  // Page Visibility API. It fix problems with different vendor prefixes and
29
29
  // add high-level useful functions.
30
- window.Visibility = {
30
+ var self = window.Visibility = {
31
31
 
32
32
  // Call callback only when page become to visible for user or
33
33
  // call it now if page is visible now or Page Visibility API
@@ -41,14 +41,14 @@
41
41
  // startIntroAnimation();
42
42
  // });
43
43
  onVisible: function (callback) {
44
- if ( !this.isSupported() || !this.hidden() ) {
44
+ if ( !self.isSupported() || !self.hidden() ) {
45
45
  callback();
46
- return this.isSupported();
46
+ return self.isSupported();
47
47
  }
48
48
 
49
- var listener = this.change(function (e, state) {
50
- if ( !Visibility.hidden() ) {
51
- Visibility.unbind(listener);
49
+ var listener = self.change(function (e, state) {
50
+ if ( !self.hidden() ) {
51
+ self.unbind(listener);
52
52
  callback();
53
53
  }
54
54
  });
@@ -70,13 +70,13 @@
70
70
  //
71
71
  // It is just proxy to `visibilitychange` event, but use vendor prefix.
72
72
  change: function (callback) {
73
- if ( !this.isSupported() ) {
73
+ if ( !self.isSupported() ) {
74
74
  return false;
75
75
  }
76
- this._lastCallback += 1;
77
- var number = this._lastCallback;
78
- this._callbacks[number] = callback;
79
- this._setListener();
76
+ self._lastCallback += 1;
77
+ var number = self._lastCallback;
78
+ self._callbacks[number] = callback;
79
+ self._setListener();
80
80
  return number;
81
81
  },
82
82
 
@@ -87,7 +87,7 @@
87
87
  // Visibility.unbind(id);
88
88
  // });
89
89
  unbind: function (id) {
90
- delete this._callbacks[id];
90
+ delete self._callbacks[id];
91
91
  },
92
92
 
93
93
  // Call `callback` in any state, expect “prerender”. If current state
@@ -103,14 +103,14 @@
103
103
  // Statistics.countVisitor();
104
104
  // });
105
105
  afterPrerendering: function (callback) {
106
- if ( !this.isSupported() || 'prerender' != this.state() ) {
106
+ if ( !self.isSupported() || 'prerender' != self.state() ) {
107
107
  callback();
108
- return this.isSupported();
108
+ return self.isSupported();
109
109
  }
110
110
 
111
- var listener = this.change(function (e, state) {
111
+ var listener = self.change(function (e, state) {
112
112
  if ( 'prerender' != state ) {
113
- Visibility.unbind(listener);
113
+ self.unbind(listener);
114
114
  callback();
115
115
  }
116
116
  });
@@ -125,7 +125,7 @@
125
125
  //
126
126
  // It is just proxy to `document.hidden`, but use vendor prefix.
127
127
  hidden: function () {
128
- return this._prop('hidden', false);
128
+ return self._prop('hidden', false);
129
129
  },
130
130
 
131
131
  // Return visibility state: 'visible', 'hidden' or 'prerender'.
@@ -141,7 +141,7 @@
141
141
  // It is just proxy to `document.visibilityState`, but use
142
142
  // vendor prefix.
143
143
  state: function () {
144
- return this._prop('visibilityState', 'visible');
144
+ return self._prop('visibilityState', 'visible');
145
145
  },
146
146
 
147
147
  // Return true if browser support Page Visibility API.
@@ -153,7 +153,7 @@
153
153
  // });
154
154
  // }
155
155
  isSupported: function () {
156
- return defined(this._prefix());
156
+ return defined(self._prefix());
157
157
  },
158
158
 
159
159
  // Link to document object to change it in tests.
@@ -180,29 +180,29 @@
180
180
 
181
181
  // Initialize variables on page loading.
182
182
  _init: function () {
183
- this._hiddenBefore = this.hidden();
183
+ self._hiddenBefore = self.hidden();
184
184
  },
185
185
 
186
186
  // Detect vendor prefix and return it.
187
187
  _prefix: function () {
188
- if ( null !== this._chechedPrefix ) {
189
- return this._chechedPrefix;
188
+ if ( null !== self._chechedPrefix ) {
189
+ return self._chechedPrefix;
190
190
  }
191
- if ( defined(this._doc.visibilityState) ) {
192
- return this._chechedPrefix = '';
191
+ if ( defined(self._doc.visibilityState) ) {
192
+ return self._chechedPrefix = '';
193
193
  }
194
194
  var name;
195
- for ( var i = 0; i < this._prefixes.length; i++ ) {
196
- name = this._prefixes[i] + 'VisibilityState';
197
- if ( defined(this._doc[name]) ) {
198
- return this._chechedPrefix = this._prefixes[i];
195
+ for ( var i = 0; i < self._prefixes.length; i++ ) {
196
+ name = self._prefixes[i] + 'VisibilityState';
197
+ if ( defined(self._doc[name]) ) {
198
+ return self._chechedPrefix = self._prefixes[i];
199
199
  }
200
200
  }
201
201
  },
202
202
 
203
203
  // Return property name with vendor prefix.
204
204
  _name: function (name) {
205
- var prefix = this._prefix();
205
+ var prefix = self._prefix();
206
206
  if ( '' == prefix ) {
207
207
  return name;
208
208
  } else {
@@ -214,43 +214,43 @@
214
214
  // Return document’s property value with name with vendor prefix.
215
215
  // If API is not support, it will retun `unsupported` value.
216
216
  _prop: function (name, unsupported) {
217
- if ( !this.isSupported() ) {
217
+ if ( !self.isSupported() ) {
218
218
  return unsupported;
219
219
  }
220
- return this._doc[this._name(name)];
220
+ return self._doc[self._name(name)];
221
221
  },
222
222
 
223
223
  // Listener for `visibilitychange` event.
224
224
  _onChange: function(event) {
225
- var state = this.state();
225
+ var state = self.state();
226
226
 
227
- for ( var i in this._callbacks ) {
228
- this._callbacks[i].call(this._doc, event, state);
227
+ for ( var i in self._callbacks ) {
228
+ self._callbacks[i].call(self._doc, event, state);
229
229
  }
230
230
 
231
- this._hiddenBefore = this.hidden();
231
+ self._hiddenBefore = self.hidden();
232
232
  },
233
233
 
234
234
  // Set listener for `visibilitychange` event.
235
235
  _setListener: function () {
236
- if ( this._listening ) {
236
+ if ( self._listening ) {
237
237
  return;
238
238
  }
239
- var event = this._prefix() + 'visibilitychange';
239
+ var event = self._prefix() + 'visibilitychange';
240
240
  var listener = function () {
241
- Visibility._onChange.apply(Visibility, arguments);
241
+ self._onChange.apply(Visibility, arguments);
242
242
  };
243
- if ( this._doc.addEventListener ) {
244
- this._doc.addEventListener(event, listener, false);
243
+ if ( self._doc.addEventListener ) {
244
+ self._doc.addEventListener(event, listener, false);
245
245
  } else {
246
- this._doc.attachEvent(event, listener);
246
+ self._doc.attachEvent(event, listener);
247
247
  }
248
- this._listening = true;
249
- this._hiddenBefore = this.hidden();
248
+ self._listening = true;
249
+ self._hiddenBefore = self.hidden();
250
250
  }
251
251
 
252
252
  };
253
253
 
254
- Visibility._init();
254
+ self._init();
255
255
 
256
256
  })();
@@ -30,8 +30,7 @@
30
30
  "use strict";
31
31
 
32
32
  if ( document.visibilityState || document.webkitVisibilityState ||
33
- document.msVisibilityState || document.mozVisibilityState ||
34
- document.oVisibilityState ) {
33
+ document.mozVisibilityState ) {
35
34
  return;
36
35
  }
37
36
 
@@ -16,18 +16,18 @@
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- ;(function () {
19
+ ;(function (undefined) {
20
20
  "use strict";
21
21
 
22
22
  var defined = function (variable) {
23
- return ('undefined' != typeof(variable));
23
+ return (variable != undefined);
24
24
  };
25
25
 
26
26
  // Visibility.js allow you to know, that your web page is in the background
27
27
  // tab and thus not visible to the user. This library is wrap under
28
28
  // Page Visibility API. It fix problems with different vendor prefixes and
29
29
  // add high-level useful functions.
30
- window.Visibility = {
30
+ var self = window.Visibility = {
31
31
 
32
32
  // Call callback only when page become to visible for user or
33
33
  // call it now if page is visible now or Page Visibility API
@@ -41,14 +41,14 @@
41
41
  // startIntroAnimation();
42
42
  // });
43
43
  onVisible: function (callback) {
44
- if ( !this.isSupported() || !this.hidden() ) {
44
+ if ( !self.isSupported() || !self.hidden() ) {
45
45
  callback();
46
- return this.isSupported();
46
+ return self.isSupported();
47
47
  }
48
48
 
49
- var listener = this.change(function (e, state) {
50
- if ( !Visibility.hidden() ) {
51
- Visibility.unbind(listener);
49
+ var listener = self.change(function (e, state) {
50
+ if ( !self.hidden() ) {
51
+ self.unbind(listener);
52
52
  callback();
53
53
  }
54
54
  });
@@ -70,13 +70,13 @@
70
70
  //
71
71
  // It is just proxy to `visibilitychange` event, but use vendor prefix.
72
72
  change: function (callback) {
73
- if ( !this.isSupported() ) {
73
+ if ( !self.isSupported() ) {
74
74
  return false;
75
75
  }
76
- this._lastCallback += 1;
77
- var number = this._lastCallback;
78
- this._callbacks[number] = callback;
79
- this._setListener();
76
+ self._lastCallback += 1;
77
+ var number = self._lastCallback;
78
+ self._callbacks[number] = callback;
79
+ self._setListener();
80
80
  return number;
81
81
  },
82
82
 
@@ -87,7 +87,7 @@
87
87
  // Visibility.unbind(id);
88
88
  // });
89
89
  unbind: function (id) {
90
- delete this._callbacks[id];
90
+ delete self._callbacks[id];
91
91
  },
92
92
 
93
93
  // Call `callback` in any state, expect “prerender”. If current state
@@ -103,14 +103,14 @@
103
103
  // Statistics.countVisitor();
104
104
  // });
105
105
  afterPrerendering: function (callback) {
106
- if ( !this.isSupported() || 'prerender' != this.state() ) {
106
+ if ( !self.isSupported() || 'prerender' != self.state() ) {
107
107
  callback();
108
- return this.isSupported();
108
+ return self.isSupported();
109
109
  }
110
110
 
111
- var listener = this.change(function (e, state) {
111
+ var listener = self.change(function (e, state) {
112
112
  if ( 'prerender' != state ) {
113
- Visibility.unbind(listener);
113
+ self.unbind(listener);
114
114
  callback();
115
115
  }
116
116
  });
@@ -125,7 +125,7 @@
125
125
  //
126
126
  // It is just proxy to `document.hidden`, but use vendor prefix.
127
127
  hidden: function () {
128
- return this._prop('hidden', false);
128
+ return self._prop('hidden', false);
129
129
  },
130
130
 
131
131
  // Return visibility state: 'visible', 'hidden' or 'prerender'.
@@ -141,7 +141,7 @@
141
141
  // It is just proxy to `document.visibilityState`, but use
142
142
  // vendor prefix.
143
143
  state: function () {
144
- return this._prop('visibilityState', 'visible');
144
+ return self._prop('visibilityState', 'visible');
145
145
  },
146
146
 
147
147
  // Return true if browser support Page Visibility API.
@@ -153,7 +153,7 @@
153
153
  // });
154
154
  // }
155
155
  isSupported: function () {
156
- return defined(this._prefix());
156
+ return defined(self._prefix());
157
157
  },
158
158
 
159
159
  // Link to document object to change it in tests.
@@ -180,29 +180,29 @@
180
180
 
181
181
  // Initialize variables on page loading.
182
182
  _init: function () {
183
- this._hiddenBefore = this.hidden();
183
+ self._hiddenBefore = self.hidden();
184
184
  },
185
185
 
186
186
  // Detect vendor prefix and return it.
187
187
  _prefix: function () {
188
- if ( null !== this._chechedPrefix ) {
189
- return this._chechedPrefix;
188
+ if ( null !== self._chechedPrefix ) {
189
+ return self._chechedPrefix;
190
190
  }
191
- if ( defined(this._doc.visibilityState) ) {
192
- return this._chechedPrefix = '';
191
+ if ( defined(self._doc.visibilityState) ) {
192
+ return self._chechedPrefix = '';
193
193
  }
194
194
  var name;
195
- for ( var i = 0; i < this._prefixes.length; i++ ) {
196
- name = this._prefixes[i] + 'VisibilityState';
197
- if ( defined(this._doc[name]) ) {
198
- return this._chechedPrefix = this._prefixes[i];
195
+ for ( var i = 0; i < self._prefixes.length; i++ ) {
196
+ name = self._prefixes[i] + 'VisibilityState';
197
+ if ( defined(self._doc[name]) ) {
198
+ return self._chechedPrefix = self._prefixes[i];
199
199
  }
200
200
  }
201
201
  },
202
202
 
203
203
  // Return property name with vendor prefix.
204
204
  _name: function (name) {
205
- var prefix = this._prefix();
205
+ var prefix = self._prefix();
206
206
  if ( '' == prefix ) {
207
207
  return name;
208
208
  } else {
@@ -214,44 +214,44 @@
214
214
  // Return document’s property value with name with vendor prefix.
215
215
  // If API is not support, it will retun `unsupported` value.
216
216
  _prop: function (name, unsupported) {
217
- if ( !this.isSupported() ) {
217
+ if ( !self.isSupported() ) {
218
218
  return unsupported;
219
219
  }
220
- return this._doc[this._name(name)];
220
+ return self._doc[self._name(name)];
221
221
  },
222
222
 
223
223
  // Listener for `visibilitychange` event.
224
224
  _onChange: function(event) {
225
- var state = this.state();
225
+ var state = self.state();
226
226
 
227
- for ( var i in this._callbacks ) {
228
- this._callbacks[i].call(this._doc, event, state);
227
+ for ( var i in self._callbacks ) {
228
+ self._callbacks[i].call(self._doc, event, state);
229
229
  }
230
230
 
231
- this._hiddenBefore = this.hidden();
231
+ self._hiddenBefore = self.hidden();
232
232
  },
233
233
 
234
234
  // Set listener for `visibilitychange` event.
235
235
  _setListener: function () {
236
- if ( this._listening ) {
236
+ if ( self._listening ) {
237
237
  return;
238
238
  }
239
- var event = this._prefix() + 'visibilitychange';
239
+ var event = self._prefix() + 'visibilitychange';
240
240
  var listener = function () {
241
- Visibility._onChange.apply(Visibility, arguments);
241
+ self._onChange.apply(Visibility, arguments);
242
242
  };
243
- if ( this._doc.addEventListener ) {
244
- this._doc.addEventListener(event, listener, false);
243
+ if ( self._doc.addEventListener ) {
244
+ self._doc.addEventListener(event, listener, false);
245
245
  } else {
246
- this._doc.attachEvent(event, listener);
246
+ self._doc.attachEvent(event, listener);
247
247
  }
248
- this._listening = true;
249
- this._hiddenBefore = this.hidden();
248
+ self._listening = true;
249
+ self._hiddenBefore = self.hidden();
250
250
  }
251
251
 
252
252
  };
253
253
 
254
- Visibility._init();
254
+ self._init();
255
255
 
256
256
 
257
257
  var timers = {
@@ -290,23 +290,23 @@
290
290
  // checkNewMails();
291
291
  // });
292
292
  every: function (interval, hiddenInterval, callback) {
293
- this._initTimers();
293
+ self._initTimers();
294
294
 
295
295
  if ( !defined(callback) ) {
296
296
  callback = hiddenInterval;
297
297
  hiddenInterval = null;
298
298
  }
299
- this._lastTimer += 1;
300
- var number = this._lastTimer;
301
- this._timers[number] = ({
299
+ self._lastTimer += 1;
300
+ var number = self._lastTimer;
301
+ self._timers[number] = ({
302
302
  interval: interval,
303
303
  hiddenInterval: hiddenInterval,
304
304
  callback: callback
305
305
  });
306
- this._runTimer(number, false);
306
+ self._runTimer(number, false);
307
307
 
308
- if ( this.isSupported() ) {
309
- this._setListener();
308
+ if ( self.isSupported() ) {
309
+ self._setListener();
310
310
  }
311
311
  return number;
312
312
  },
@@ -320,12 +320,12 @@
320
320
  // Visibility.stop(slideshow);
321
321
  // });
322
322
  stop: function(id) {
323
- var timer = this._timers[id]
323
+ var timer = self._timers[id]
324
324
  if ( !defined(timer) ) {
325
325
  return false;
326
326
  }
327
- this._stopTimer(id);
328
- delete this._timers[id];
327
+ self._stopTimer(id);
328
+ delete self._timers[id];
329
329
  return timer;
330
330
  },
331
331
 
@@ -340,18 +340,18 @@
340
340
 
341
341
  // Initialize variables on page loading.
342
342
  _initTimers: function () {
343
- if ( this._timersInitialized ) {
343
+ if ( self._timersInitialized ) {
344
344
  return;
345
345
  }
346
- this._timersInitialized = true;
346
+ self._timersInitialized = true;
347
347
 
348
348
  if ( defined(window.jQuery) && defined(jQuery.every) ) {
349
- this._setInterval = this._chronoInterval;
349
+ self._setInterval = self._chronoInterval;
350
350
  } else {
351
- this._setInterval = this._originalInterval;
351
+ self._setInterval = self._originalInterval;
352
352
  }
353
- this.change(function () {
354
- Visibility._timersStopRun()
353
+ self.change(function () {
354
+ self._timersStopRun()
355
355
  });
356
356
  },
357
357
 
@@ -386,8 +386,8 @@
386
386
  // Argument `now` say, that timers must be execute now too.
387
387
  _runTimer: function (id, now) {
388
388
  var interval,
389
- timer = this._timers[id];
390
- if ( this.hidden() ) {
389
+ timer = self._timers[id];
390
+ if ( self.hidden() ) {
391
391
  if ( null === timer.hiddenInterval ) {
392
392
  return;
393
393
  }
@@ -398,25 +398,25 @@
398
398
  if ( now ) {
399
399
  timer.callback.call(window);
400
400
  }
401
- timer.id = this._setInterval(timer.callback, interval);
401
+ timer.id = self._setInterval(timer.callback, interval);
402
402
  },
403
403
 
404
404
  // Stop timer from `every` method by it’s ID.
405
405
  _stopTimer: function (id) {
406
- var timer = this._timers[id];
406
+ var timer = self._timers[id];
407
407
  clearInterval(timer.id);
408
408
  delete timer.id;
409
409
  },
410
410
 
411
411
  // Listener for `visibilitychange` event.
412
412
  _timersStopRun: function (event) {
413
- var isHidden = this.hidden(),
414
- hiddenBefore = this._hiddenBefore;
413
+ var isHidden = self.hidden(),
414
+ hiddenBefore = self._hiddenBefore;
415
415
 
416
416
  if ( (isHidden && !hiddenBefore) || (!isHidden && hiddenBefore) ) {
417
- for ( var i in this._timers ) {
418
- this._stopTimer(i);
419
- this._runTimer(i, !isHidden);
417
+ for ( var i in self._timers ) {
418
+ self._stopTimer(i);
419
+ self._runTimer(i, !isHidden);
420
420
  }
421
421
  }
422
422
  }
@@ -23,6 +23,8 @@
23
23
  return ('undefined' != typeof(variable));
24
24
  };
25
25
 
26
+ var self = Visibility;
27
+
26
28
  var timers = {
27
29
 
28
30
  // Run callback every `interval` milliseconds if page is visible and
@@ -59,23 +61,23 @@
59
61
  // checkNewMails();
60
62
  // });
61
63
  every: function (interval, hiddenInterval, callback) {
62
- this._initTimers();
64
+ self._initTimers();
63
65
 
64
66
  if ( !defined(callback) ) {
65
67
  callback = hiddenInterval;
66
68
  hiddenInterval = null;
67
69
  }
68
- this._lastTimer += 1;
69
- var number = this._lastTimer;
70
- this._timers[number] = ({
70
+ self._lastTimer += 1;
71
+ var number = self._lastTimer;
72
+ self._timers[number] = ({
71
73
  interval: interval,
72
74
  hiddenInterval: hiddenInterval,
73
75
  callback: callback
74
76
  });
75
- this._runTimer(number, false);
77
+ self._runTimer(number, false);
76
78
 
77
- if ( this.isSupported() ) {
78
- this._setListener();
79
+ if ( self.isSupported() ) {
80
+ self._setListener();
79
81
  }
80
82
  return number;
81
83
  },
@@ -89,12 +91,12 @@
89
91
  // Visibility.stop(slideshow);
90
92
  // });
91
93
  stop: function(id) {
92
- var timer = this._timers[id]
94
+ var timer = self._timers[id]
93
95
  if ( !defined(timer) ) {
94
96
  return false;
95
97
  }
96
- this._stopTimer(id);
97
- delete this._timers[id];
98
+ self._stopTimer(id);
99
+ delete self._timers[id];
98
100
  return timer;
99
101
  },
100
102
 
@@ -109,18 +111,18 @@
109
111
 
110
112
  // Initialize variables on page loading.
111
113
  _initTimers: function () {
112
- if ( this._timersInitialized ) {
114
+ if ( self._timersInitialized ) {
113
115
  return;
114
116
  }
115
- this._timersInitialized = true;
117
+ self._timersInitialized = true;
116
118
 
117
119
  if ( defined(window.jQuery) && defined(jQuery.every) ) {
118
- this._setInterval = this._chronoInterval;
120
+ self._setInterval = self._chronoInterval;
119
121
  } else {
120
- this._setInterval = this._originalInterval;
122
+ self._setInterval = self._originalInterval;
121
123
  }
122
- this.change(function () {
123
- Visibility._timersStopRun()
124
+ self.change(function () {
125
+ self._timersStopRun()
124
126
  });
125
127
  },
126
128
 
@@ -155,8 +157,8 @@
155
157
  // Argument `now` say, that timers must be execute now too.
156
158
  _runTimer: function (id, now) {
157
159
  var interval,
158
- timer = this._timers[id];
159
- if ( this.hidden() ) {
160
+ timer = self._timers[id];
161
+ if ( self.hidden() ) {
160
162
  if ( null === timer.hiddenInterval ) {
161
163
  return;
162
164
  }
@@ -167,25 +169,25 @@
167
169
  if ( now ) {
168
170
  timer.callback.call(window);
169
171
  }
170
- timer.id = this._setInterval(timer.callback, interval);
172
+ timer.id = self._setInterval(timer.callback, interval);
171
173
  },
172
174
 
173
175
  // Stop timer from `every` method by it’s ID.
174
176
  _stopTimer: function (id) {
175
- var timer = this._timers[id];
177
+ var timer = self._timers[id];
176
178
  clearInterval(timer.id);
177
179
  delete timer.id;
178
180
  },
179
181
 
180
182
  // Listener for `visibilitychange` event.
181
183
  _timersStopRun: function (event) {
182
- var isHidden = this.hidden(),
183
- hiddenBefore = this._hiddenBefore;
184
+ var isHidden = self.hidden(),
185
+ hiddenBefore = self._hiddenBefore;
184
186
 
185
187
  if ( (isHidden && !hiddenBefore) || (!isHidden && hiddenBefore) ) {
186
- for ( var i in this._timers ) {
187
- this._stopTimer(i);
188
- this._runTimer(i, !isHidden);
188
+ for ( var i in self._timers ) {
189
+ self._stopTimer(i);
190
+ self._runTimer(i, !isHidden);
189
191
  }
190
192
  }
191
193
  }
metadata CHANGED
@@ -1,32 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visibilityjs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
5
4
  prerelease:
5
+ version: 0.6.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Andrey "A.I" Sitnik
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-08 00:00:00.000000000 Z
12
+ date: 2012-11-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ type: :runtime
15
16
  name: sprockets
17
+ prerelease: false
16
18
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
19
  requirements:
19
20
  - - ! '>='
20
21
  - !ruby/object:Gem::Version
21
22
  version: '2'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
23
  none: false
24
+ version_requirements: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ! '>='
28
27
  - !ruby/object:Gem::Version
29
28
  version: '2'
29
+ none: false
30
30
  description: Visibility.js allow you to determine whether your web page is visible
31
31
  to an user, is hidden in background tab or is prerendering. It allows you use the
32
32
  page visibility state in JavaScript logic and improve browser performance or improve
@@ -55,17 +55,17 @@ rdoc_options: []
55
55
  require_paths:
56
56
  - lib
57
57
  required_ruby_version: !ruby/object:Gem::Requirement
58
- none: false
59
58
  requirements:
60
59
  - - ! '>='
61
60
  - !ruby/object:Gem::Version
62
61
  version: '0'
63
- required_rubygems_version: !ruby/object:Gem::Requirement
64
62
  none: false
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - ! '>='
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0'
68
+ none: false
69
69
  requirements: []
70
70
  rubyforge_project:
71
71
  rubygems_version: 1.8.23