Testing addition of pseudo page visibility API

This commit is contained in:
dominiclord
2016-05-18 23:58:08 -04:00
parent f07a6aba23
commit b2abd51191
4 changed files with 119 additions and 10 deletions

View File

@@ -1,10 +1,11 @@
/* jshint esnext: true */
import { $document, $window, $html, $body } from '../utils/environment';
/**
* Abstract module
* Gives access to generic jQuery nodes
*/
class AbstractModule {
export default class {
constructor(options) {
this.$document = $document;
this.$window = $window;
@@ -13,5 +14,3 @@ class AbstractModule {
this.$el = options.$el;
}
}
export default AbstractModule;

View File

@@ -1,4 +1,5 @@
/* jshint esnext: true */
import { registerDocumentHiddenCallback, registerDocumentVisibleCallback } from '../utils/visibility';
import AbstractModule from './AbstractModule';
export default class extends AbstractModule {
@@ -10,6 +11,17 @@ export default class extends AbstractModule {
this.$document.on('title.changeLabel', (event, value) => {
this.changeLabel(value);
});
registerDocumentHiddenCallback(this.logHidden);
registerDocumentVisibleCallback(this.logVisible);
}
logHidden() {
console.log('Title is hidden');
}
logVisible() {
console.log('Title is visible');
}
changeLabel(value) {

View File

@@ -0,0 +1,36 @@
/* jshint esnext: true */
import { $document, $window, $html, $body } from '../utils/environment';
const CALLBACKS = {
hidden: [],
visible: []
};
// Main event
$document.on('visibilitychange', function(event) {
if(document.hidden){
onDocumentChange('hidden');
}else{
onDocumentChange('visible');
}
});
function registerDocumentHiddenCallback(callback) {
CALLBACKS['hidden'].push(callback);
}
function registerDocumentVisibleCallback(callback) {
CALLBACKS['visible'].push(callback);
}
function onDocumentChange(state) {
let callbacks = CALLBACKS[state];
let i = 0;
let len = callbacks.length;
for (; i < len; i++) {
callbacks[i]();
}
}
export {registerDocumentHiddenCallback, registerDocumentVisibleCallback};