Javascript: document.execCommand кросс-браузер?
Я просто натыкаюсь на кусок кода, который я никогда раньше не видел:
document.execCommand('Copy');
который, похоже, скопирует содержимое буфера обмена в элемент в фокусе.
Доступна ли эта функция кросс-браузера?
Я нашел страницу, которая показывает матрицу совместимости для document.execCommand
.
Ответы
Ответ 1
Это для "режима разработки", когда браузер эффективно превращает документ в редактор. API-интерфейс execCommand появился в IE и позже был добавлен в HTML5. Точно, какие команды поддерживаются, а также их поведение варьируется в разных браузерах. Доступ к буферам обмена считается угрозой безопасности.
Ответ 2
Да, я использовал его в IE, Chrome, Safari. Если он работает для этих браузеров, то он должен работать для остальных. Во всяком случае, метод execCommand
объекта document
используется для выполнения команд, связанных со встроенными функциями Rich Text Editing в браузере. Синтаксис execCommand
следующий: document.execCommand(command, uiBool, argument)
Параметр команды - это команда для выполнения - жирный шрифт, подчеркивание, шрифт и т.д.
Тогда у вас есть uiBool
, которое является логическим значением, которое указывает, должен ли отображаться пользовательский интерфейс по умолчанию.
И последний параметр - это использование аргумента для некоторых команд, для которых требуется передать аргумент. Если для команды не требуется никаких аргументов, мы передаем значение null
в качестве третьего параметра.
Пример:
document.getElementById("whateverID").document.execCommand('bold', false, null);
или
document.getElementById("whateverID").document.execCommand('bold', false, <a variable nae>);
Ответ 3
Обновление: ну, document.execCommand
документировано в документации DOM Mozilla, но его описание там немного отличается от документации MSDN.
Я все еще уверен, что это не в стандарте ECMA-262.