2009-02-06 23 views
5

Tôi đang làm việc trên một số máy lẻ Firefox sẽ thao tác văn bản được đánh dấu.Làm cách nào để bạn thao tác văn bản đã chọn qua tiện ích mở rộng Firefox

Trên một trang độc lập, tôi có thể nhận được các văn bản đã chọn với:

selectedText = document.selection?document.selection.createRange().text; 

Sau đó, tôi muốn thao tác văn bản đã chọn với các hoạt động chuỗi trên textarea trong câu hỏi. Thật không may, đó là không thể cho một plugin kể từ khi tôi không biết nơi văn bản được lựa chọn của người dùng là.

Có cách nào lấy tên của phần tử trong đó văn bản được chọn hoặc để thay đổi văn bản đã chọn mà không có tên của phần tử không?

Trả lời

4
selectedText = content.getSelection().toString(); 
+2

Hm, tôi đọc "Tôi đang làm việc trên một phần mở rộng của Firefox ..." – altblue

+1

và để chứng minh bản thân theo cách đơn giản, mở một số trang web ngẫu nhiên trong Firefox, chọn một số văn bản trên trang đó, tập trung thanh địa chỉ, dán "javascript: void (alert (content.getSelection()))" (không có dấu ngoặc kép) và nhấn Enter. – altblue

0

bạn cần phải nhận được đối tượng dao động từ người dùng lựa chọn của bạn:

var userSelection; 
if (window.getSelection) 
    userSelection = window.getSelection(); 
else if (document.selection) // should come last; Opera! 
    userSelection = document.selection.createRange(); 

var rangeObject = getRangeObject(userSelection); 

...

function getRangeObject(selectionObject) { 
    if (selectionObject.getRangeAt) 
     return selectionObject.getRangeAt(0); 
    else { // Safari! 
     var range = document.createRange(); 
     range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset); 
     range.setEnd(selectionObject.focusNode, selectionObject.focusOffset); 
     return range; 
    } 
} 

... 

Các đối tượng Range có bắt đầu và các nút chứa kết thúc, vv ..

bạn có thể tìm thêm thông tin trên Quirksmode here và trên w3.org here

+0

Cảm ơn thông tin. Tôi đã thử đặt các chức năng đó vào overlay.js của mình, nhưng không thể quản lý() bất kỳ văn bản được đánh dấu nào sau khi cài đặt plugin. Tôi là một người mới ở đây, nhưng có thể việc đặt mã Safari và Opera vào một phần mở rộng của Firefox có phải là vấn đề không? –

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