2010-06-21 10 views
5

Tôi đang cố sử dụng contenteditable và styleWithCss.webkit stylewithcss contenteditable không hoạt động?

Dường như nó không hoạt động trong webkit.

Bất cứ khi nào tôi sử dụng thực hiện lệnh execCommand, nó sẽ tạo ra một <b> thay vì khoảng tôi mong đợi.

Dưới đây là một bản demo: http://jsbin.com/izomo/2/edit

Chọn một phần của văn bản, nhấp vào nút đậm, và xem ra html.

Đây có phải là lỗi hoặc tôi đang làm điều gì sai.

Cảm ơn bạn rất nhiều.

Trả lời

2

Dường như mọi thứ đều hoạt động như dự định. Xem Bug 13490 trên WebKit BugZilla.

EDIT: Hỗ trợ styleWithCSS được bổ sung vào nguồn WebKit trong changeset 40560, trên 03 Tháng hai 2009.

đó nói rằng, nó có vẻ như kể từ đó, không có vấn đề gì, styleWithCSS luôn thiết lập để false, trong khi trước khi thay đổi, các lệnh kiểu luôn được áp dụng với CSS, như thể styleWithCSS đã tồn tại nhưng luôn được đặt thành true.

Tôi thậm chí đã cố gắng viết lại dòng document.execCommand của bạn như sau, theo Mozilla documentation:

document.execCommand("styleWithCSS", true, null); 
document.execCommand("bold", false, null); 

Những lệnh sửa đổi vẫn làm việc trong Firefox, nhưng không phải trong hoặc Chrome 5 hoặc Safari 5 (cả trên Windows và cài đặt hôm nay).

Vì vậy, có vẻ như đây là lỗi WebKit.

+0

Đó là cho stylewithcss sai sự thật, tôi đang cố gắng để làm stylewithcss đúng. – Mark

+0

D'oh! Đuợc. Tôi sẽ lặn. –

+0

Lỗi tương tự như bản gốc, nhưng bây giờ theo hướng ngược lại? Tôi đã cập nhật câu trả lời của mình sau một số nghiên cứu khác.Tôi nghĩ rằng việc bổ sung hỗ trợ 'styleWithCSS' được cho là có thể cấu hình được, nhưng nó bị kẹt trong trạng thái mặc định của nó, đó là' false'. (Xem [Editor.cpp: 940] (http://trac.webkit.org/browser/trunk/WebCore/editing/Editor.cpp?rev=61418#L940).) –

1
document.execCommand("styleWithCSS", true, null); 
document.execCommand("bold", false, null); 
10

Tôi không thể làm điều này để làm việc với các lệnh trong cả hai câu trả lời ở đây. Đối với những người vẫn còn đập đầu của họ với vấn đề này là làm thế nào để có được nó để làm việc.

Chúng tôi có thể vượt qua ba giá trị để execCommand

document.execCommand(command, uiElement, value) 

Như xuất sắc trả lời Christopher chi tiết giá trị của "styleWithCSS" được thiết lập để sai theo mặc định chỉ thử:

alert(document.queryCommandState("styleWithCss")); 

Để đặt nó vào đúng, bạn cần phải vượt qua đối số thứ ba, "giá trị" là đúng. Như thế này:

document.execCommand("styleWithCSS", null, true); 

này hoạt động trong cả hai trình duyệt Firefox và Chrome