Testing addition of pseudo page visibility API
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
36
assets/scripts/utils/visibility.js
Normal file
36
assets/scripts/utils/visibility.js
Normal 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};
|
||||
Reference in New Issue
Block a user