2010-07-19 69 views
0

我的XHTML使用的JavaScript ID顯示給用戶的將是類似下面的..計算選擇的開始和結束的索引不考慮「 r n 」在IE

<html iTag="d1e1" version="-//W3C//DTD XHTML 1.1//EN"> 
<head iTag="d1e3"> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title iTag="d1e5">Every document must have a title</title> 
    </head> 
    <body iTag="d1e9"> 
    <h1 iTag="d1e11" align="center">Very Important Heading</h1> 
    <b itag="dle13">Hi. Welcome to 
    Java world.</b> 
    <p iTag="d1e15">Since this is just a sample, I won't put much text here.</p> 
    </body> 
    </html> 

如果用戶正在選擇類似於「到Java世界。因爲」在屏幕上,所以選擇開始將是't'的位置。我需要計算關於它的直接父母的開始選擇,這意味着在標籤名稱爲「dle13」的「b」標籤內,「t」的位置。 同樣的方式,選擇結束符在iTAG名稱爲「dle15」的「p」標籤中。我需要單獨關於此標籤的結尾。

爲此,我們使用的是下面的Java腳本代碼..

if (document.selection) { 
      alert("IE");   
      txt = document.selection.createRange().text; 
      var range_all = document.body.createTextRange(); 
      if (txt!='') 
      { 
       // Finding start position 
      range = document.selection.createRange(); 
       range.collapse(true); 
       startItag = range.parentElement().getAttribute("iTag"); 
      var startParentElement = range.parentElement();     
      if(startItag == '' || startItag == null) 
      { 
       startItag = range.parentElement().parentNode.getAttribute("iTag"); 
       startParentElement = range.parentElement().parentNode; 
      } 
      //alert("parentId:" + parentId); 
      alert("parent node name for start:" + range.parentElement().nodeName); 
       range_all.moveToElementText(startParentElement); 
       for (var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start ++) 
        range_all.moveStart('character', 1); 
       range = document.selection.createRange(); 
       range.collapse(false); 
       range_all = document.body.createTextRange(); 
       endItag = range.parentElement().getAttribute("iTag"); 
      var endParentElement = range.parentElement();     
      if(endItag == '' || endItag == null) 
      { 
       endItag = range.parentElement().parentNode.getAttribute("iTag"); 
       endParentElement = range.parentElement().parentNode; 
      } 
      alert("parent node name for end:" + range.parentElement().nodeName); 
       range_all.moveToElementText(endParentElement); 
       for (var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end ++) 
        range_all.moveStart('character', 1); 
       document.getElementById("startIndex").value= sel_start ; 
       document.getElementById("endIndex").value= sel_end ; 
       document.getElementById("startItag").value= startItag ; 
       document.getElementById("endItag").value= endItag ; 
       alert("sel_start:" + sel_start); 
       alert("sel_end:" + sel_end); 
      } 

但這個開始和結束IDEX計算忽略了「新行(‘\ r \ n’)」 我需要甲肝與考慮索引「\ r \ n」以及..

請求大家的幫助才達到它..

+0

JavaScript是* *一個字,否則就成了完全不同的東西;) – 2010-07-19 13:22:29

回答

相關問題