[javascript]ブラウザ下のテキストドメインカーソルの位置

6555 ワード

[javascript]ブラウザ下のテキストドメインカーソルの位置
FR.richerから良い記事を転送します.各種ブラウザの下でテキストドメインのカーソルの位置を指定します.
ユーザーの体験に注目して、ユーザーがマウスをクリックする回数を減らして、ある人に返答して、クリックして返答した後に、直接カーソルを“XXXに返答します:”に位置した後に
テストページは以下の通りです.01 <!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"02 <html xmlns="http://www.w3.org/1999/xhtml"03 <html> 04  <head> 05  <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> 06  <title> JS </title> 07  <meta name="Author" content=" @02web.com/hublog/"08  <meta name="Keywords" content=" js cursor location "09  <meta name="Description" content=" JS "10  <script type="text/javascript"11  var $ = function( _id ) { return typeof _id === 'string' ? document.getElementById( _id ) : null }; 12  13  doReply = function() 14  15  var replyBox = $( 'reply' ); 16  17  replyBox.value += " XXX:"18  19  replyBox.focus(); 20  21  </script> 22  </head> 23  24  <body> 25  <a href="#" onclick="doReply()"> </a> 26  <br/> 27  <textarea name="reply" id="reply" rows="6" cols="20"></textarea> 28  <br/> 29  <a href="http://www.google.com" title=" "> </a> 30  </body> 31 </html>うん、これは のページです. は です.テキストエリアにはXXXという が れます.フォックスの でカーソルはデフォルトで に められます.IEの で、もしあなたが けば、 は の のカーソルはテキストエリアにあります.ラッキーです.カーソルはまだ です.でも、あなたが す にカーソルはテキスト にありません.この カーソルは に します. を たら、どうすればいいか かります.IEの で クリックして を する にfocusをクリックしてください. の されたdoreply があります.01 doReply = function() 02 03  04  var replyBox = $( 'reply' ); 05  06  replyBox.focus(); 07  08  replyBox.value += " XXX:"09  10  replyBox.focus(); 11 }これはいい を しましたが、もしある カーソルを に くように されたら、IEの でやりやすいです.まずテキスト に を わせてから、 を して、focusに ってもいいです. でだめだと したら、 したとしても、 はどうすればいいですか?それに の もずっと つの ではないです. なものがありますか? のさらなる な けの を けるために、カーソルの けをしましょう.リッチテキストエディタでよく われていますが、こことはまた うようです. なリッチテキストエディタ、 えば、ティンマイMceとckEditorはすべてiframeをテキストとして したエリアです.ここはテキストドメインだけです.
IEがサポートするtextRangeはこれを に できます.IEのこのオブジェクトについては にここを ることができます.ここを してください. には、ドキュメントの の に してください. つの を じにすれば、カーソルを の に させ、 されていません.OK、setsCurorPos を します.01 var setCursorPos = function( el, pos ) 02 03  if( el.createTextRange ) 04  05  var rng = el.createTextRange(); // textRange  06  rng.moveStart( 'character', pos ); // rng  07  rng.collapse( true ); //  08  rng.select();//  09  el.focus(); 10  }else if( el.setSelectionRange ) 11  12  el.focus(); //  13  el.setSelectionRange( pos , pos ); //  14  15 }これらがあれば、ページをもう り すことができます.