run |
new function(_name, _iframe){ with(document){
return self[_name = '_lister_'] = {
name: _name,
css: {
a: 'margin: 0px 2px; text-decoration: none',
div: 'padding: 4px 0px 1px 2px',
iframe: 'border: none',
shared: 'color: menutext; background-color: menu'
},
div: null,
iframe: null,
show: function(ls){ with(this){
div = create('div', ['position: absolute; z-index: 999; left: 0px',
css.div, css.shared].join(';'));
iframe = _iframe = create('iframe',
['display: none',
css.iframe, css.shared].join(';'));
var r = /^(.+?)\D?(\d+)$/, csa = css.a +';'+ css.shared;
for(var m, i = 0, l = ls.length; i < l; ++i)
div.appendChild((m = r.exec(ls[i]))
? create('a', csa, m[1],
{href: ['javascript:', _name,
'.load(', m[2], ')'].join('')})
: createTextNode(ls[i] || '|'));
div.appendChild(create('a', csa, '[x]', {href: '#'})).onclick =
function(){ return !body.removeChild(div) };
div.appendChild(createElement('br'));
body.appendChild(div).appendChild(iframe);
var sticker = function(){
div.style.top = Math.max(body.scrollTop,
documentElement.scrollTop) +'px';
};
sticker();
listen(document, 'scroll', sticker);
return this;
}},
script: function(path){
var s = createElement('script');
s.src = path;
body.appendChild(s);
},
load: function(id){
this.script(['http://wedata.net/items/', id, '.json?callback=',
_name, '.run'].join(''));
},
run: function(o){ with({open: this.open}) eval(o.data.run) },
open: function(url, nam, opt){ with(_iframe){
var m = /\bwidth\s*=\s*(\d+)/.exec(opt);
if(m) width = +m[1];
m = /\bheight\s*=\s*(\d+)/.exec(opt);
if(m) height = +m[1];
src = url;
name = contentWindow.name = nam;
style.display = 'block';
return contentWindow;
}},
listen: body.attachEvent
? function(elm, evn, fun){ elm.attachEvent('on'+ evn, fun) }
: function(elm, evn, fun){ elm.addEventListener(evn, fun, false) },
create: function(tag, css, txt, atr){
var e = createElement(tag);
if(css) e.style.cssText = css;
if(txt) e.innerHTML = txt;
for(var a in atr) if(atr.hasOwnProperty(a)) e[a] = atr[a];
return e;
}
}
}} |
sample |
javascript:({id:2272,ls:['eijiro:2270','thesaurus:2285',,'delicious:2271','hatebu:2275',,'deleter:2284'],cb:'_f',d:document,_:function(s){with(this){self[cb+=id]=function(o){eval(o.data.run).show(ls)};s=d.createElement('script');s.src='http://wedata.net/items/'+id+'.json?callback='+cb;d.body.appendChild(s)}}}._()) |