• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:選択範囲の取得と設定(JavaScript))

選択範囲の取得と設定(JavaScript)

このQ&Aのポイント
  • IEとFirefoxで選択範囲の取得と設定する方法について教えてください
  • ユーザーが要素を選択してボタンAを押すと、選択範囲の開始位置と終了位置を変数に保存します
  • 選択が解除されてボタンBを押すと、保存された選択範囲を元に文書内の該当部分を選択できます

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>Selection</title> <p><a>月日</a>は<a>白代</a>の<a>過客</a>にして<a>行き交う</a><a>年</a>も<a>旅人</a>なり。</p> <p>  <input type="button" value="記憶" onmousedown="A(this.ownerDocument);">  <input type="button" value="復元" onmousedown="B(this.ownerDocument);"> </p> <script type="text/javascript"> var R = null; var A = new Function; var B = new Function; // DOM-HTML5 (from Gecko) if (document.defaultView && document.defaultView.getSelection)  A = function(doc) {   var s = doc.defaultView.getSelection();   if (! s.isCollapsed)    R = s.getRangeAt(0);  },  B = function(doc) {   if (R) {    var s = doc.defaultView.getSelection();    s.removeAllRanges();    s.addRange(R);   }  }; // MSHTML (IE5+) else if (document.selection && document.selection.createRange)  A = function(doc) {   var r = doc.selection.createRange();   if (r.text.length > 0)    R = r;  },  B = function(doc) {   if (R)    R.select();  }; </script>

tomotomo1008
質問者

お礼

ありがとうございました。範囲ではなくてレンジそのものを代入できるんですね…。 IEのやり方までわざわざありがとうございます

その他の回答 (1)

回答No.2

firefox、safari、Chromeのみですが(IEは頑張ってください) var ranges = []; var selection = function(){   if (window.getSelection) {     return window.getSelection();   }   else {     if (document.getSelection) {       return document.getSelection();     }     else {       if (document.selection) {         return document.selection;       }     }   } }; //現在の選択内容をrangesに保持し、選択を解除 var clear_select = function(){    var sel = selection();   if(sel.removeAllRanges){     //範囲の保持     for(var i = 0; i < sel.rangeCount; i++) {       ranges[i] = sel.getRangeAt(i);     }     sel.removeAllRanges();   } else{   //ie if(sel.empty) {   ranges = sel.createRange(); sel.empty(); } } }; //rangesを元に選択を復帰。 var re_select = function(){   var sel = selection();   clear_select();   if(sel.addRange){     for(var i = 0; i < ranges.length; i++) {        sel.addRange(ranges[i]);     }     ranges = [];   }else{     //ie用。。。。   } };

関連するQ&A