選択文字列を取得
Opera 10.50 で document.selection が使えなくなったので window.getSelection も使うように書いてみました。
alert( (function f(w){ var d=w.document,q,t,i=0,r=d.selection,s=r&&(r.createRange()||i).text; if(!r){ s=w.getSelection()+'',q=s||d.querySelectorAll('input,textarea'); while(!s&&(t=q[i++]))s=t.value.slice(t.selectionStart,t.selectionEnd) } i=0; while(!s&&(t=w[i++]))try{s=f(t)}catch(e){} return s||''; })(this) )
もう少し golf れそうな感じもするけど…。
<参考リンク>
- -
window.getSelection だけなら。
alert( (function f(w){ var d=w.document,s=w.getSelection()+'',q=s||d.querySelectorAll('input,textarea'),t,i=0; while(!s&&(t=q[i++]))s=t.value.slice(t.selectionStart,t.selectionEnd);i=0; while(!s&&(t=w[i++]))try{s=f(t)}catch(e){} return s||''; })(this) )
さらに window.top だけでいいなら。
alert( (function(){ var s=getSelection()+'',q=s||document.querySelectorAll('input,textarea'),t,i=0; while(!s&&(t=q[i++]))s=t.value.slice(t.selectionStart,t.selectionEnd); return s; })() )
さらに input,textarea を除いていいなら。
alert( getSelection()+'' )