2010-06-02 37 views
9

Từ số previous question để chọn văn bản html cụ thể, tôi đã trải qua this link để hiểu phạm vi trong chuỗi html.html - phạm vi lựa chọn - nhận phạm vi + nút bắt đầu + nút kết thúc + khoảng cách

Để chọn văn bản cụ thể trên trang html. Chúng ta cần phải làm theo các bước này.

giả định HTML:

<h4 id="entry1196"><a 
    href="http://radar.oreilly.com/archives/2007/03/call_for_a_blog_1.html" 
    class="external">Call for a Blogger's Code of Conduct</a></h4> 

<p>Tim O'Reilly calls for a Blogger Code of Conduct. His proposals are:</p> 

<ol> 
    <li>Take responsibility not just for your own words, but for the 
     comments you allow on your blog.</li> 
    <li>Label your tolerance level for abusive comments.</li> 
    <li>Consider eliminating anonymous comments.</li> 
</ol> 

java script để tạo vùng chọn bằng cách phạm vi

var range = document.createRange(); // create range 
var startPar = [the p node];   // starting parameter 
var endLi = [the second li node]; // ending parameter 
range.setStart(startPar,13);   // distance from starting parameter. 
range.setEnd(endLi,17);    // distance from ending parameter 
range.select();      // this statement will make selection 

Tôi muốn làm điều này trong nghịch chiều. Ý tôi là, giả định rằng lựa chọn được thực hiện bởi người dùng trên trình duyệt (safari). Câu hỏi của tôi là làm thế nào chúng ta có thể có nút khởi đầu (như chúng ta có 'nút p' ở đây) và nút kết thúc (như chúng ta có 'nút li thứ hai' ở đây) và phạm vi (như chúng ta có 13,17 ở đây) ?

Edit: nỗ lực của tôi (Từ this question)

var sel = window.getSelection(); 

    if (sel.rangeCount < 1) { 
     return; 
    } 
    var range = sel.getRangeAt(0); 
    var startNode = range.startContainer, endNode = range.endContainer; 

    // Split the start and end container text nodes, if necessary 
    if (endNode.nodeType == 3) { 
     endNode.splitText(range.endOffset); 
     range.setEnd(endNode, endNode.length); 
    } 

    if (startNode.nodeType == 3) { 
     startNode = startNode.splitText(range.startOffset); 
     range.setStart(startNode, 0); 
    } 

Nhưng, nhưng tôi đang bối rối về nhận như thế nào, nếu được lựa chọn là đoạn đầu tiên hoặc thứ hai hoặc thứ ba, hoặc chọn là được xếp vào nhóm đầu tiên hoặc một nhóm thứ hai hoặc những gì ....

+0

Bạn có thể làm rõ chính xác bạn muốn đạt được điều gì không? –

+0

@Tim Down - hãy để tôi giải thích. Người dùng thực hiện lựa chọn và nhấn vào nút. Tôi cần lưu trữ phạm vi mà người dùng đã chọn. –

Trả lời

6

Việc lưu trữ phạm vi đã chọn rất đơn giản. Sau đây sẽ trở lại chỉ có phạm vi lựa chọn đầu tiên (Firefox ít nhất hỗ trợ nhiều lựa chọn):

<script type="text/javascript"> 

function getSelectionRange() { 
    var sel; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      return sel.getRangeAt(0); 
     } 
    } else if (document.selection) { 
     return document.selection.createRange(); 
    } 
    return null; 
} 

var range; 

</script> 
<input type="button" onclick="range = getSelectionRange();" 
    value="Store selection"> 

range sẽ có đặc tính startContainer (nút có chứa đầu của dãy núi này), startOffset (một bù đắp trong nút chứa bắt đầu : bù đắp ký tự trong trường hợp các nút văn bản và phần bù con trong các phần tử), endContainerendOffset (tương đương với các thuộc tính bắt đầu). Range cũng được ghi nhận bởi its specificationMDC.

Trong IE, range sẽ chứa TextRange, hoạt động rất khác. Thay vì các nút và bù trừ, TextRanges có liên quan đến các ký tự, từ và câu. Trang web của Microsoft có một số tài liệu: http://msdn.microsoft.com/en-us/library/ms533042%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx.

+0

nhưng phạm vi là loại biến javascript. Làm thế nào tôi có thể ghi vào tập tin bằng cách sử dụng mục tiêu c. Tôi biết đó là một câu hỏi mới. Tôi đang hỏi nó. –

+0

Bạn đề xuất thế nào để JavaScript của bạn nói chuyện với Objective-C? Tôi cho rằng đây là một dự án iPhone/iPad mà chúng tôi đang thực hiện, vì vậy bạn chỉ quan tâm đến Mobile Safari? –

+0

Có chính xác - Tôi đang phát triển một ứng dụng iPhone. Bây giờ, tôi đang gặp rắc rối nhiều hơn làm thế nào để lưu trữ biến java trong ứng dụng iphone. –

Các vấn đề liên quan