2008年7月9日水曜日

OperaのHit-a-Hint強化版?

このエントリーをはてなブックマークに追加
数字キーって押しにくいよね。
って事で、英字で打てるようにした。Shiftキー対策はまだしてない。
また考えたらやってみる。
ちなみに、例の如くfしかやってない。
後、ページ内リンクが650以上だったら、上手く行かないかもしれない。
そんなページ訪れんな!(ぇ


Go to page,"javascript:var bgcolor = '#FF0';var color = '#000';var hintlist = new Array();var hintedlinks = new Array();var map = new Array();var mapindex = 0;var choice = '';var keycodemapping = {'97':'a','98':'b','99':'c','100':'d','101':'e','102':'f','103':'g','104':'h','105':'i','106':'j','107':'k','108':'l','109':'m','110':'n','111':'o','112':'p','113':'q','114':'r','115':'s','116':'t','117':'u','118':'v','119':'w','120':'x','121':'y','122':'z','13':'Enter','27':'Esc','8':'Bkspc','44':','};var originalTitle = document.title;function drawHints(){document.addEventListener('keypress',interpretKeyStroke,true);document.title+=' - ';var allLinks = document.getElementsByTagName('a');var viewportStart = window.pageYOffset - 5;var viewportEnd = viewportStart + window.innerHeight + 10;for (var i = 0;i<allLinks.length; i++){linkYcoord = getAbsoluteY(allLinks[i]);if(linkYcoord > viewportStart && linkYcoord < viewportEnd && allLinks[i].href != '') {hintedlinks.push(allLinks[i]);}}for (var i = 0;i<hintedlinks.length; i++){var hint = document.createElement('span');hintlist.push(hint);hint.style.backgroundColor=bgcolor;hint.style.color=color;hint.style.position='absolute';hint.innerHTML = createText(mapindex);map[createText(mapindex)]=hintedlinks[i].href;mapindex++;hintedlinks[i].appendChild(hint,hintedlinks[i]);}}function getAbsoluteY(element){var y = 0;while (element) {y += element.offsetTop;element = element.offsetParent;}return y;}function removeHints(){for (var i=0; i<hintedlinks.length; i++){hintedlinks[i].removeChild(hintlist[i],hintedlinks[i]);}choice='';document.title=originalTitle;document.removeEventListener('keypress',interpretKeyStroke,true);delete map;delete hintlist;delete hintedlinks;}function getURLchoice(){return (map[choice]==undefined) ? False : map[choice];}function interpretKeyStroke(e){e.preventDefault();var key=keycodemapping[(typeof event!='undefined')?window.event.keyCode:e.keyCode];if(key=='Enter'){location.href=getURLchoice();removeHints();}else if(key=='Esc'){removeHints();}else if(key=='Bkspc'){choice=choice.slice(0,-1);document.title=document.title.slice(0,-1);}else if(key == undefined){removeHints();}else{choice+=key;document.title+=key;if((''+choice).length>=(''+mapindex).length){location.href=getURLchoice();removeHints();}}}function createText(m){var ret='';if( m>25 ){var v=parseInt(m/26);ret += String.fromCharCode(v+96);m -= v*26;}ret += String.fromCharCode(m+97);return ret;}drawHints();"


2008/07/10追記
iのkeycodemapがIになっていたので、直しました。

2008/07/14追記
aaの表記がちゃんとされていなかったのを直しました。気がつくの遅すぎorz
(ちなみに、{が表示されていた)

0 件のコメント :

コメントを投稿