arale-messenger
Version:
跨域 Iframe 通信解决方案,兼容 IE 系列浏览器。
52 lines (43 loc) • 1.29 kB
JavaScript
var expect = require('spm-expect.js');
var Messenger = require('../index.js'),
$ = require('spm-jquery'),
messenger,
message,
delay = 0,
node;
mocha.globals('iframe');
mocha.suite.timeout(8000);
describe('Messenger', function() {
afterEach(function() {
messenger = null;
node && node.remove();
node = null;
});
it('子页面传给父页面', function(done) {
createIframe(function() {
setTimeout(function() {
expect(message).to.be('from iframe.');
done();
}, delay);
});
});
it('父页面传给子页面', function(done) {
createIframe(function() {
messenger.targets['iframe1'].send('from parent.');
setTimeout(function() {
expect(seajs.parentMessage).to.be('from parent.');
done();
}, delay);
});
});
});
function createIframe(callback) {
node = $('<iframe id="iframe" src="tests/test-iframe.html"></iframe>');
node.appendTo(document.body);
window.loaded = callback;
messenger = new Messenger('parent', 'tests');
messenger.addTarget(node[0].contentWindow, 'iframe1');
messenger.listen(function(msg) {
message = msg;
});
}