Я знаю, как выполнить execCommand
на каком-то выделенном тексте, но есть ли способ выполнить какой-либо другой текст в моем contenteditable
div?применить стиль с execCommand на произвольный текст
1
A
ответ
1
В IE, да. В других браузерах нет.
Все основные настольные браузеры реализуют ту или иную форму document.execCommand()
, которая действует только при выборе пользователя. В IE объект TextRange
также имеет метод execCommand
. Например, получится следующее текстовое содержимое элемента зеленого цвета, когда пользователь наводит курсор на него:
<div id="test">Here is a test div</div>
<script type="text/javascript">
var div = document.getElementById("test");
div.onmouseover = function() {
if (document.body.createTextRange) {
var textRange = document.body.createTextRange();
textRange.moveToElementText(div);
textRange.execCommand("foreColor", false, "green");
}
};
</script>
0
В случае, если вы не знаете, .execCommand
- это только нестандартная функция javascript, которую следует избегать.
Если вы сообщите нам, для чего вы хотите его использовать, тогда мы можем предложить альтернативу, соответствующую стандартам.
'document.execCommand', который работает только на текущем отборе, на самом деле хорошо поддерживается. У Firefox это было с тех пор, как до 1.0 дней, и WebKit с тех пор, как Safari 2.0, я думаю. Opera также поддерживала его, по крайней мере, с 9.0. –
@TimDown 'execCommand', похоже, действительно поддерживается. Это документировано в любых спецификациях? Я чувствую, что все это использует «Hackish» – Raynos
Это, конечно же, не выполняется последовательно. Есть попытка указать его в HTML5, хотя, как окончательно, я не знаю. http://dev.w3.org/html5/spec/Overview.html#execCommand –