я знаю, как выполнить execCommand
для некоторого выделенного текста, но есть ли способ выполнить какой-либо другой текст в моем contenteditable
div?
применить стиль с помощью execCommand к произвольному тексту
Ответы (2)
В ИЕ да. В других браузерах нет.
Все основные настольные браузеры реализуют некоторую форму 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>
person
Tim Down
schedule
31.01.2011
Если вы не знаете, .execCommand
— это нестандартная функция javascript только для IE, которой следует избегать.
Если вы сообщите нам, для чего вы хотите его использовать, мы можем предложить альтернативу, соответствующую стандартам.
person
Raynos
schedule
31.01.2011
document.execCommand
, который работает только с текущим выбором, на самом деле хорошо поддерживается. В Firefox это было еще до версии 1.0, а в WebKit, по-моему, примерно с Safari 2.0. Opera также поддерживает его как минимум с версии 9.0.
- person Tim Down; 31.01.2011
@TimDown
execCommand
, похоже, действительно хорошо поддерживается. Хотя это задокументировано в каких-либо спецификациях? Я чувствую, что все, что он использует, является хакерским
- person Raynos; 31.01.2011
Это, конечно, не последовательно реализовано. Предпринимаются попытки указать его в HTML5, хотя насколько он окончательный, я не знаю. dev.w3.org/html5/spec/Overview.html#execCommand
- person Tim Down; 31.01.2011
.execCommand является частью API редактирования в HTML5, поэтому он не является нестандартным. Конечно, спецификация HTML5 не доработана, поэтому, если они ее по какой-то причине дернут, мне придется извиниться. :-) Подробнее читайте здесь: dev.w3.org/html5/spec /Overview.html#editing-apis
- person james.garriss; 12.07.2011
@james.gariss да, он находится в процессе стандартизации. Но начиналось как нестандартное расширение.
- person Raynos; 13.07.2011