В web-приложениях часто приходится иметь дело с копированием какого-то string-значения в системный буфер обмена. Это становится реальной проблемой, когда нужна кроссбраузерность. Из JavaScript-а работать с буфером обмена можно, но это позволяет лишь Internet Explorer и Firefox, но с некоторыми ограничениями.
Нашёл для себя выход – использовать Flash-объект (вроде, copyToClipboard.swf назывался), встроенный на страницу. На элемент HTML-страницы вешается событие, JavaScript-ом передаётся нужный параметр во Flash-объект, а уже тот в свою очередь имеет доступ к буферу обмена пользователя. Таким образом, можно было положить любую строку из браузера пользователя в буфер обмена операционной системы.
Недавно мой Flash Player 9 нашёл в сети новую версию и предложил обновиться на 10-ю версию, на что я дал утвердительный ответ. Скачал, обновился, проверил flash объекты, все работают, всё функционирует так же, ... но потом обнаружилось, что в буфер обмена не попадает заветная строка.
На сайте adobe нашёл информацию о новом релизе, и начал разбираться, в чём дело. Оказалось, что изменений было много, и самые важные коснулись безопасности нового Flash Player-а, в числе которых и были ограничения на работу с clipboard. В девятой версии плеера ActionScript мог устанавливать значение в системный буфер обмена в любое время. В Flash Player 10 метод System.setClipboard() может быть успешно вызван только через ActionScript вызванный именно взаимодействием пользователя. Это могут быть, как события вызванные мышью, так и события исходящие от клавиатуры. Это нововведение с взаимодействием пользователя так же касается и нового ActionScript 3.0 метода Clipboard.generalClipboard.setData() и метода Clipboard.generalClipboard.setDataHandler().
Таким образом, эти изменения в основном затрагивают все SWF-файлы, которые используют System.setClipboard() метод. Нововведения касаются всех SWF-фалов проигрываемых в версиях Flash Player 10 и старше.
Комментариев нет:
Отправить комментарий