2012-03-20 3 views
1

У меня есть этот скрипт, который захватывает выделенный текст, я хотел бы только сделать что-то, когда выбор текста заканчивается, а не во время выбора в progess, браузер IE9 только текст может быть также выбран doubleclikking на слово, в этом случае функция также должна делать что-то один раз, когда я использую OnMouseUp это дваждыIE9 javascript: дождитесь окончания окончания

<head> 
    <script type="text/javascript"> 
    function selectedText(){ 
     var doc = document.selection; 
     if(doc && doc.createRange().text.length != 0){ 
     log.innerHTML = doc.createRange().text; 
     } 
    } 
    </script> 
</head> 
<body onselect="selectedText();"> 
    <span id=sp>this is the text from where you can select one or more words</span> 
    <div id=log style="background-color=yellow;"></div> 
</body> 

ответ

0

Никогда не возражаете, понял это, это для будущей ссылки

<head> 
    <script type="text/javascript"> 
     count = 0; 
     function selectedText(){ 
      var doc = document.selection; 
      if(doc && doc.createRange().text.length != 0){ 
      count++; 
      log.innerHTML = "count: "+count+" "+doc.createRange().text; 
      } 
     } 

     function AddEventHandler() { 
      var sp = document.getElementById ("sp"); 
      if (sp.addEventListener) { // all browsers except IE before version 9 
      sp.addEventListener ("click", selectedText, false); 
      } 
      else { 
      if (sp.attachEvent) { // IE before version 9 
       sp.attachEvent ('onmouseup', selectedText); 
      } 
      } 
     }; 
    </script> 
</head> 
<body onload=AddEventHandler()> 
    <span id=sp>this is the text from where you can select one or more words</span> 
    <div id=log style="background-color=yellow;"></div> 
</body> 

или эта короткая версия

<head> 
    <script type="text/javascript"> 
    count = 0; 
    document.onselectionchange = function() { 
     count++; 
     var sel = window.getSelection(); 
     if (sel.rangeCount > 0) { 
     var range = sel.getRangeAt(0); 
     document.getElementById("log") = count+":"+range.toString(); 
     } 
    }; 
    </script> 
</head> 
<body> 
    <span id=sp>this is the text from where you can select one or more words</span> 
    <div id=log style="background-color=yellow;"></div> 

</body> 
0

IE поддерживает selectionchange события на Document объектов, что является более полезным, чем select события, но все равно не будет делать точно так, как вы просите, потому что процесс двойного щелчка может изменить выбор более чем один раз, и, следовательно, огнь более одного события selectionchange.

Вот пример использования этого события, которое будет работать в IE, по крайней мере еще в IE 6:

document.onselectionchange = function() { 
    var sel = document.selection; 
    if (sel.type == "Text") { 
     var range = sel.createRange(); 
     document.getElementById("log") = range.text; 
    } 
}; 

Если вы не заботитесь о более ранних версиях IE, вы можете использовать поддержку IE 9 в для стандартный диапазон DOM и выбора API, а затем этот код также будет работать в WebKit:

document.onselectionchange = function() { 
    var sel = window.getSelection(); 
    if (sel.rangeCount > 0) { 
     var range = sel.getRangeAt(0); 
     document.getElementById("log") = range.toString(); 
    } 
}; 
+0

попробовал второй в IE9, но когда я перетащить, чтобы выбрать я могу выбрать только 1 или 2 символа, то он останавливается – peter

Смежные вопросы