141 lines
5.1 KiB
HTML
141 lines
5.1 KiB
HTML
<!doctype>
|
|
<html>
|
|
<head>
|
|
<title>pluie.org bt demo - v0.7</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<style>
|
|
body { background-color:#888; color:white; font-family:arial; font-size:1.3rem; }
|
|
#test { border: 1px dashed #ccc; }
|
|
body > div { border-radius:20px; margin:40px; padding:20px; background-color: #ccc; color:black; }
|
|
body > span { font-size:0.8rem; }
|
|
button { padding:5px 15px; }
|
|
h3 { margin:35px 0 10px 0; }
|
|
h2 { margin:5px 0 0 0; }
|
|
textarea { padding:8px 5px; border-radius:10px; border-style:solid; width:100%; height:120px; font-size:1.2rem; }
|
|
#test { margin:20px; background-color:white; padding:20px; border: 1px dashed #aaa; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h2>pluie.org bt demo : </h2>
|
|
<span>author : a-sansara - version : 0.7</span>
|
|
<div>
|
|
<p> Manage commnunication between browser tabs.</p>
|
|
<p> this js lib can perform several actions on browser tabs like :<br/>
|
|
<ul><li>append/rewrite/synchro node on all (other) tabs or a specific tab (and possibly on specific frame context) eventually with callback.</li>
|
|
<li>reload all tabs or a specific tab with specified url or tab 's current url</li>
|
|
<li>perform your custom actions on all tabs or specific tab</li>
|
|
<li>kill zombies tabs onload</li>
|
|
<li>(*new) define custom before and after command functions</li>
|
|
</ul>
|
|
</p>
|
|
<h3>Static actions</h3>
|
|
<button class="cmd-sta-append" title="$bt.append('#test', '<b>it\'s cool to append</b><br/>');">static dom append</button>
|
|
<button class="cmd-sta-html" title="$bt.html('#test', '<b>it\'s cool to rewrite</b><br/>')">static dom html</button>
|
|
<button class="cmd-zombkill" title="">cmd zombkill</button>
|
|
|
|
<h3>Dynamic actions</h3>
|
|
enter txt or html : <br/>
|
|
<textarea id="data"></textarea>
|
|
<br/>select your action<br/>
|
|
<button class="cmd-append">dom append</button>
|
|
<button class="cmd-append-cb">dom append with callback</button>
|
|
<button class="cmd-html">dom html</button>
|
|
<button class="cmd-html">dom html with before</button>
|
|
<button class="cmd-sync">dom sync</button>
|
|
<button class="cmd-tarsync">target dom sync</button>
|
|
<button class="cmd-reload">tab reload</button>
|
|
<button class="cmd-custom">custom cmd</button>
|
|
<br/>then check other tabs
|
|
|
|
<h3>Target output</h3>
|
|
<div id="test"></div>
|
|
</div>
|
|
<script type="text/javascript" src="src/svan-min.js"></script>
|
|
<script type="text/javascript" src="src/bt.js"></script>
|
|
<script type="text/javascript">
|
|
// define a new custom cmd
|
|
$bt.CMD_CUSTOM = "customCmd";
|
|
// treat custom command to other browser tabs
|
|
$bt.on = function(cmd) {
|
|
switch (cmd.name) {
|
|
case $bt.CMD_CUSTOM :
|
|
// do stuff
|
|
$bt.log('custom command `'+cmd.name+'` with value `'+cmd.customKey+'`');
|
|
alert('FROM TAB '+$bt.id+' : \ncustom command `'+cmd.name+'` with value `'+cmd.customKey+'`');
|
|
break;
|
|
}
|
|
}
|
|
//
|
|
$(document).ready(function() {
|
|
$bt.init(function() {
|
|
$bt.setCallback('mycallback', function(cmd) {
|
|
alert("i'm the callback of cmd "+cmd.name);
|
|
});
|
|
$bt.before = function(cmd) {
|
|
console.log('before cmd '+cmd.name);
|
|
}
|
|
$bt.after = function(cmd) {
|
|
console.log('after cmd '+cmd.name);
|
|
}
|
|
});
|
|
var bind = function(call) {
|
|
var html = $('#data').val();
|
|
if (html.length > 0) call(html)
|
|
else $('#data').attr('placeholder', 'insert data first !');
|
|
}
|
|
$('.cmd-append').on('click', function(){
|
|
bind(function(data) {
|
|
$bt.append('#test', data);
|
|
});
|
|
});
|
|
$('.cmd-append-cb').on('click', function(){
|
|
bind(function(data) {
|
|
$bt.append('#test', data, null, 'mycallback');
|
|
});
|
|
});
|
|
$('.cmd-html').on('click', function(){
|
|
bind(function(data) {
|
|
$bt.html('#test', data);
|
|
});
|
|
});
|
|
$('.cmd-custom').on('click', function(){
|
|
bind(function(data) {
|
|
$bt.send({ name : $bt.CMD_CUSTOM, customKey : data });
|
|
});
|
|
});
|
|
$('.cmd-sync').on('click', function(){
|
|
$('h2').html('pluie.org bt demo (sync on '+(new Date).getTime()+') :');
|
|
$bt.sync('h2');
|
|
});
|
|
$('.cmd-reload').on('click', function(){
|
|
$bt.reload(window.location.pathname+"?reload="+(new Date).getTime());
|
|
});
|
|
$('.cmd-tarsync').on('click', function(){
|
|
$bt.sync('#test');
|
|
});
|
|
$('.cmd-sta-append').on('click', function(){
|
|
eval(this.title);
|
|
});
|
|
$('.cmd-sta-html').on('click', function(){
|
|
eval(this.title);
|
|
});
|
|
$('.cmd-zombkill').on('click', function(){
|
|
$bt.list = $j.obj($l.get($bt.LS_TABS));
|
|
for (var i=4; i > 0; i--) {
|
|
var zombi = (new Date).getTime()+i;
|
|
$bt.list.push(zombi);
|
|
}
|
|
$l.set($bt.LS_TABS, $j.str($bt.list));
|
|
$bt._broadcast();
|
|
$bt.log($bt.list);
|
|
var l = $bt.list.length;
|
|
alert('zombies tabs created, so, check for zombies');
|
|
$bt.zombkill(function(){
|
|
alert('killing '+(l-$bt.list.length)+' zombies');
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|