Tôi có một số javascript điều khiển html dựa trên những gì người dùng đã chọn. Đối với các trình duyệt thực, các phương pháp tôi đang sử dụng tận dụng đối tượng "Phạm vi", thu được như vậy:Sự cố phát hiện Đường kẻ mới trong đối tượng Phạm vi JavaScript
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var content = range.toString();
Biến nội dung chứa tất cả văn bản đã chọn, hoạt động tốt. Tuy nhiên tôi thấy rằng tôi không thể phát hiện các dòng mới trong chuỗi kết quả. Ví dụ:
văn bản được lựa chọn là:
abc
def
writing
range.toString() để đánh giá "abcdefghi".
Mọi tìm kiếm trên các ký tự đặc biệt sẽ không trả về phiên bản \ n \ f \ r hoặc thậm chí \ s. Tuy nhiên, nếu tôi ghi biến đó ra một điều khiển có thể chỉnh sửa, các nguồn cấp dữ liệu dòng sẽ xuất hiện trở lại.
Có ai biết tôi đang thiếu gì không?
Có thể có liên quan rằng các lựa chọn và thao tác này nằm trên div có thể chỉnh sửa. Các hành vi tương tự là rõ ràng trong Chrome, FireFox và Opera. Đáng ngạc nhiên là IE cần mã hoàn toàn khác nhau, nhưng không có bất kỳ vấn đề ở đó, khác hơn là chỉ là IE.
Rất cám ơn.
Bạn có ý nghĩa gì bởi 'range.toString() đánh giá thành "abcdefghi"'? Bạn đang sử dụng cái gì để kiểm tra giá trị đó? Trình gỡ lỗi? alert()? –
Bạn có đang viết giá trị 'dải ô' cho điều khiển có thể chỉnh sửa hay' dải ô.toString() 'không? – RaYell
@Ben Dunlap tất cả những điều trên, sử dụng trình gỡ rối bên ngoài, cảnh báo hoặc trình gỡ rối dựa trên trình duyệt. Ví dụ, nhấn vào một điểm ngắt với Visual Studio. @RaYell - Tôi đã thử viết nội dung do phạm vi của tôi.toString() gọi vào div có thể chỉnh sửa, để chứng minh rằng nó đã duy trì thông tin dòng mới. Câu trả lời thứ nhất đóng đinh điều này mặc dù, sel.toString() có các dòng mới, range.toString() thì không. Cảm ơn tất cả. – Timbo