dueljs

DuelJS - JavaScript HTML5 Master/Slave Browser Tabs Helper


Keywords
dueljs, duel, master, slave, window, javascript, onfocus, broadcasting, document.hidden
License
MIT
Install
npm install dueljs@1.2.7

Documentation

DuelJS v1.2.7

Documentation Status GitHub license Bower GitHub stars Travis branch

JavaScript HTML5 Master/Slave Browser Tabs Helper.

See a brief look on the homepage

Documentation available on http://dueljs.readthedocs.org/

New in 1.2.7:
  • Fixed #13: webpack import
New in 1.2.6:
New in 1.2.5:
  • Different variables for each channel (setItem, getItem, removeItem)
New in 1.2.4:
  • New storage methods setItem, getItem, removeItem with JSONify inside
  • Direct localStorage changed to window.localStorage
  • Fixed emit bug (arguments)
  • New configuration duel.noWarnings
/** Turn off errors for debug */
duel.noWarnings = false;
/** New storage methods example */
var ch = duel.channel('demo');
ch.setItem('x', 10);
ch.setItem('y', {'a': true});
ch.getItem('x'); // 10
ch.getItem('y'); // Object {'a': true}
New in 1.2.3:
New in 1.2.2:
  • Fixed some additional bugs (extra-release)
New in 1.2.1:
New in 1.2.0:
  • New method: channel.off - stop watching event
  • New method: channel.once - executing callback only one time and stop watching event
  • New method: channel.emit - the alias of channel.broadcast
  • Function window.isMaster() now returns true even if no one channel has initialized #3
  • Dev test coverage (Mocha + PhantomJS)
New in 1.1.0:
  • "storage" event improves performance in modern browsers. To turn it off and use old method - do:
duel.useStorageEvent = false; // auto false in IE
  • Now only slaves can execute triggers
  • Some unimportant bug fixes
List of attested browsers:
  1. Opera 29.0.1795.35 (with storage event)
  2. Chrome 41.0.2272.118 (with storage event)
  3. Firefox 34.0 (with storage event)
  4. Internet Explorer 11 (without storage event)
  5. Safari 534.57.2 (with storage event)
  6. Android 4.3 LT29i default browser (with storage event)
  7. Microsoft Edge 25.10586.0.0 (with storage event)

Internet Explorer does incorrect. So it using force useStorageEvent = false by default.

How it works with Internet Explorer without storage event?

Don't worry. It using setInterval javascript checking.

Testing suite
  1. NodeJS version 6.7.0
  2. PhantomJS version 2.1.1
  3. Chai version 3.5.0
  4. Mocha version 3.1.0
  5. Mocha-PhantomJS custom fork of 4.1.0

In Mac OS Sierra you want to use phantomjs from brew (brew install phantomjs) and check to link it:

$ which phantomjs
/usr/local/bin/phantomjs

And also you can create this link by yourself:

ln -s /usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs /usr/local/bin/phantomjs

The reason I temporary changed original repo of mocha-phantomjs to git+https://github.com/studentIvan/mocha-phantomjs.git#master is cause mocha-phantomjs doesn't support the second phantomjs right now.