webkit stylewithcss contenteditable не работает?

Я пытаюсь использовать contenteditable и styleWithCss.

Кажется, это не работает в вебките.

Каждый раз, когда я использую команду do execCommand, она генерирует <b>, а не диапазон, который я ожидал.

Вот демонстрация: http://jsbin.com/izomo/2/edit.

Выделите часть текста, нажмите жирную кнопку и посмотрите вывод HTML.

Это баг или я что-то не так делаю.

Большое тебе спасибо.


person Mark    schedule 21.06.2010    source источник


Ответы (2)


Кажется, все работает как надо. См. Ошибка 13490 на WebKit BugZilla.

EDIT: поддержка styleWithCSS была добавлена ​​в исходный код WebKit в наборе изменений 40560, 03 февраля 2009 г.

Тем не менее, кажется, что с тех пор, несмотря ни на что, styleWithCSS всегда устанавливается на false, тогда как до изменения команды стилей всегда применялись с помощью CSS, как если бы styleWithCSS существовал, но всегда был установлен на true.

Я даже пытался переписать вашу строку document.execCommand следующим образом в соответствии с документацией Mozilla:

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

Эти измененные команды все еще работают в Firefox, но не в Chrome 5 или Safari 5 (как в Windows, так и в установленных сегодня).

Итак, может показаться, что это ошибка WebKit.

person Christopher Parker    schedule 25.06.2010
comment
Это для stylewithcss false, я пытаюсь сделать stylewithcss true. - person Mark; 25.06.2010
comment
О! Хорошо. Я нырну. - person Christopher Parker; 26.06.2010
comment
Та же ошибка, что и в оригинале, но теперь в другом направлении? Я обновил свой ответ после некоторых дополнительных исследований. Я думаю, что добавление поддержки styleWithCSS должно было сделать его настраиваемым, но он застрял в состоянии по умолчанию, то есть false. (См. Editor.cpp:940.) - person Christopher Parker; 26.06.2010
comment
Печальные новости, но спасибо. Я приму ваш ответ после подтверждения ошибки. - person Mark; 26.06.2010
comment
На самом деле ваша исправленная команда была правильной, и это работает. Не ошибка. - person Mark; 28.06.2010
comment
Странный; у меня не работал. Интересно, произошло ли что-то странное с JSbin и/или кешем браузера, потому что у меня это не сработало... В любом случае, рад, что это сработало! - person Christopher Parker; 28.06.2010
comment
Третий параметр — это желаемое значение команды. Для StyleWithCSS вам нужен логический третий параметр. Второй параметр почти всегда не имеет значения и может быть равен false. Отсюда document.execCommand("styleWithCSS", false, true); - person Tim Down; 15.05.2013

Мне не удалось заставить это работать с командами в обоих ответах здесь. Для тех, кто все еще ломает голову над проблемой, вот как заставить ее работать.

Мы можем передать три значения в execCommand

document.execCommand( command, uiElement, value ) 

Как подробно описано в превосходном ответе Кристофера, значение «styleWithCSS» по умолчанию установлено как false, просто попробуйте:

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

Чтобы установить его в true, вам нужно передать третий аргумент, «значение», как true. Как это:

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

Это работает как в Firefox, так и в Chrome.

person unni    schedule 14.05.2013