Tôi đang làm việc trên Trình chỉnh sửa văn bản đa dạng cho trình duyệt web và tôi muốn làm việc với các giá trị màu và kích thước phông chữ hiện tại trong phần tử RTE/ContentEditable. Có một số chức năng được chọn trước để nhận các giá trị này, như execCommand, được kết nối trực tiếp với phần tử ContentEditable không? Hoặc tôi nên sử dụng một số thư viện jQuery phạm vi văn bản mà sẽ nhận được các thuộc tính này?ContentEditable - Nhận màu/kích thước phông chữ hiện tại
13
A
Trả lời
27
Bạn có thể sử dụng document.queryCommandValue()
để có được màu sắc và kích thước phông chữ của vùng chọn hiện tại trong tất cả các trình duyệt chính:
Live Demo: http://jsfiddle.net/timdown/AJBsY/
Code:
var colour = document.queryCommandValue("ForeColor");
var fontSize = document.queryCommandValue("FontSize");
Tuy nhiên, kết quả là không nhất quán giữa các trình duyệt và lệnh FontSize
chỉ hoạt động với các kích thước phông chữ 1-7 được sử dụng trong phần tử HTML <font>
thay vì CSS, vì vậy, bạn nên ngừng giữ phần tử ntaining việc lựa chọn và kiểm tra các thuộc tính CSS của nó sử dụng window.getComputedStyle()
/currentStyle
:
Live Demo: http://jsfiddle.net/timdown/K4n2j/
Code:
function getComputedStyleProperty(el, propName) {
if (window.getComputedStyle) {
return window.getComputedStyle(el, null)[propName];
} else if (el.currentStyle) {
return el.currentStyle[propName];
}
}
function reportColourAndFontSize() {
var containerEl, sel;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
containerEl = sel.getRangeAt(0).commonAncestorContainer;
// Make sure we have an element rather than a text node
if (containerEl.nodeType == 3) {
containerEl = containerEl.parentNode;
}
}
} else if ((sel = document.selection) && sel.type != "Control") {
containerEl = sel.createRange().parentElement();
}
if (containerEl) {
var fontSize = getComputedStyleProperty(containerEl, "fontSize");
var colour = getComputedStyleProperty(containerEl, "color");
alert("Colour: " + colour + ", font size: " + fontSize);
}
}
Đây là một sự cải tiến, nhưng vẫn còn những mâu thuẫn trình duyệt như các đơn vị khác nhau hoặc định dạng màu.
Các vấn đề liên quan
- 1. Nhận phông chữ phông chữ @ đẹp
- 2. Đặt lại Css: kích thước phông chữ: 100%; Tại sao?
- 3. Kích thước phông chữ trong Twitter Bootstrap
- 4. Cảnh báo: "Min Font Size lớn hơn kích thước phông chữ hiện tại"
- 5. NSFont - Cách nhận phông chữ phù hợp?
- 6. Tại sao tôi cần gán phông chữ của Canvas để thay đổi kích thước phông chữ trong Delphi 2009?
- 7. Kích thước phông chữ nhãn hiệu
- 8. đặt kích thước phông chữ trong jquery
- 9. Highcharts Thay đổi kích thước phông chữ
- 10. Kích thước phông chữ mặc định TinyMCE
- 11. Cách giảm kích thước phông chữ .ttf?
- 12. Tăng kích thước phông chữ trong Firebug?
- 13. Kích thước phông chữ toàn cầu WPF
- 14. CSS, kích thước phông chữ tương đối
- 15. Kích thước phông chữ cho lập trình?
- 16. PHPExcel: Đặt kích thước phông chữ?
- 17. Kích thước phông chữ lớn, chữ cái mỏng
- 18. Điều chỉnh kích thước phông chữ tùy thuộc vào phông chữ nào được sử dụng từ ngăn xếp phông chữ
- 19. Xác định kích thước phông chữ khác nhau cho mỗi phông chữ trong một phông chữ-gia đình
- 20. Nhận kích thước phông chữ được tính toán cho phần tử DOM trong JS
- 21. Nhận tên tập tin phông chữ dựa trên Tên phông chữ và Kiểu (Chữ đậm/nghiêng)
- 22. Thay đổi kích thước phông chữ CSS khi gia đình phông chữ rơi trở lại
- 23. Thay đổi "Kích thước phông chữ Windows (DPI)" trong Powershell?
- 24. Tải trước phông chữ phông chữ?
- 25. GTKSharp, Pango, đặt kích thước phông chữ quirkiness
- 26. Nén/Deflate @ phông chữ phông chữ
- 27. Vấn đề về kích thước phông chữ với iPhone
- 28. Nhận tên phông chữ của tệp .ttf
- 29. cách cập nhật phông chữ icomoon thành phông chữ icomoon hiện có?
- 30. Kích thước phông chữ 14px/26px trong css làm gì?
Tôi đã không nhận thấy một số vấn đề với các đơn vị thuộc tính kích thước phông chữ trong các phiên bản mới của tất cả các trình duyệt và IE7,8. Tuy nhiên màu sắc là một nơi nào đó giải thích với rgb và một nơi nào đó với ký hiệu hex. Nhưng đó không phải là vấn đề đối với tôi, có lẽ tôi sẽ tạo ra một số điều kiện cho nó. Cảm ơn bạn! – optimista
Có thể nhận được "không xác định" nếu lựa chọn có chứa nhiều cỡ chữ (hoặc màu) không? Bây giờ khi tôi chọn tất cả, nó cảnh báo "Màu: rgb (0, 0, 0), cỡ chữ: 16px". Điều này là khó hiểu cho mục đích của tôi. –
@Timo: Có thể phần tử mẹ của lựa chọn không phải là phần bạn nghĩ. Khi bạn chọn tất cả, có khả năng là phần tử có thể chỉnh sửa được, có thể không có kiểu dáng nào. –