Lightweight wrapper around window.open() that adds Promise and postMessage support
bower install promise-window --save-dev
npm install promise-window --save-dev
Grab a copy of promise-window (development version).
The simplest way to use PromiseWindow is to use the PromiseWindow.open
convenience method:
/**
* index.html
*/
PromiseWindow.open('http://popup.html').then(
// Success
function(data) {
// data.result == 'awesome' (1)
},
// Error
function(error) {
switch(error) {
case 'closed':
// window has been closed
break;
case 'my-custom-message':
// 'my-custom-message' postMessage has been sent from target URL (2)
break;
}
}
);
/**
* popup.html
*/
// report succees
opener.postMessage({ result: 'awesome' }, location.origin); // (1)
// report error
opener.postMessage({ error: 'my-custom-message' }, location.origin); // (2)
Instantiating the PromiseWindow
prototype gives you more control. The
following example shows how to close the window after 30 seconds.
var promiseWindow = new PromiseWindow('http://popup.html'),
timeout = window.setTimeout(function() {
promiseWindow.close();
}, 30000);
promiseWindow.open().then(
function(data) {
window.clearTimeout(timeout);
// ... (success)
},
function(error) {
window.clearTimeout(timeout);
// ... (error)
}
);
See API Documentation
for more information about the PromiseWindow
prototype.
This library follows Semantic Versioning
Please do! We are always looking to improve this component. Please see our Contribution Guidelines on how to properly submit issues and pull requests.
Alex Mercier © 2015