opera:cacheでインクリメンタルサーチを実現するためのBookmarklet
Wednesday, 2. April 2008, 08:41:48
原典では言語ファイルを書き換える方法が紹介されています。こちらの方が圧倒的に使いやすいのですが、如何せん言語ファイルは適宜更新されるのが問題です。書き換えを忘れてしまいますからね。
何があろうとブックマークは引き継ぐので忘れませんから、私はブックマークレットで利用することにします。
javascript:(function(){for(var i=0;document.links[i];i++){document.links[i].target='_blank'};var l=document.getElementsByTagName('tr');var sf=document.createElement('input');sf.type='text';sf.defaultValue='Search';sf.style='margin:0 4px;float:right';sf.addEventListener('focus',function(){if(this.value==this.defaultValue){this.value='';}},false);sf.addEventListener('blur',function(){if(!this.value){this.value=this.defaultValue;}},false);sf.addEventListener('keyup',function(){var v=this.value;for(var i=0,li;li=l[i];i++){var p=li.lastChild.firstChild.innerText;if(p&&p.indexOf(v)==-1){li.style='display:none'}else{li.style='display:table-row'};}},false);var inp=document.createElement('input');inp.type='button';inp.value='Thumbnails';inp.style='float:right;';inp.addEventListener('click',function(){var b=/\.(jpe?g|bmp|gif|png|ico|swf|flv)$/i;var f=/\.(swf|flv)$/i;for(var i=0,li;li=l[i];i++){var p=li.lastChild.firstChild;var c=li.lastChild.firstChild.innerText;if(li.offsetHeight!=0&&p.childNodes.length<2){if(b.test(c)){var stl='float:right;border:1px dotted black;margin:1px;padding:1px;';if(f.test(c)){var dv=document.createElement('div');p.appendChild(dv);dv.innerHTML='<embed src='+p.href+'>';var fh=dv.firstChild;fh.setAttribute('height',100);fh.setAttribute('width',100);fh.setAttribute('style',stl+'content:normal;outline:none;color:inherit');}else{var image=document.createElement('img');image.setAttribute('src',p.href);if(!image.height||image.height>100){image.height='100'};if(!image.width||image.width>100){image.width='100'};image.setAttribute('style',stl);p.appendChild(image);}}}};},false);var th=document.getElementsByTagName('th')[2];th.appendChild(inp);th.appendChild(sf);})();
原典を数文字書き換えてBookmarklet化しただけです。あとは、何故か残っていたい不要な空白を取り除いたりとか、そのくらい。



