Я хочу иметь возможность инициировать реальное событие вставки, когда пользователь нажимает. Я могу понять, что это может быть проблемой безопасности, потому что, если на какой-либо веб-странице есть доступ к буферу пользователей, это будет плохо. Поэтому я думал, что все браузеры запрещают доступ к данным буфера обмена.
Но, например, в документах google (в текстовом приложении), я могу вставить из настраиваемого контекстного меню (щелчок правой кнопкой мыши на элементе html, притворяющемся контекстным), даже если данные буфера обмена были скопированы в буфер обмена в разных приложениях, таких как Microsoft Paint. Это работает в браузере Google Chrome, который является браузером моего интереса.
Я думал, что они делают это с использованием flash, но он все еще работает, даже если я полностью отключу флеш-память в хром. Об этом уже говорилось question, но ответ, упомянутый там, неверен. Другой ответ на этот вопрос предполагает, что Google использует для этого расширение chrome, но работает, даже если я отключу все расширения в chrome.
Как воспроизвести в окнах:
- отключить флеш-память в Chrome, отключить все расширения
- перезагрузка
- перейдите в google docs и откройте новый пустой документ для записи (Docs, а не электронная таблица).
- запускать приложение для рисования microsoft в windows
- нарисуйте что-нибудь в краске microsoft, нажмите Ctrl + A, чтобы выделить все, Ctrl + C, чтобы скопировать
- переключитесь на chrome на пустую страницу документов и щелкните правой кнопкой мыши на пустой странице
- выберите "Вставить" из искусственного контекстного меню (обратите внимание, что контекстное меню не является внутренним меню из окон, но оно происходит с веб-страницы html в документах google).
- вы увидите, что образ буфера обмена был вставлен в документ документов (!)
- как они это делают?
Я знаю, как получить доступ к данным буфера обмена, если пользователь нажимает Ctrl + V на моей веб-странице, потому что это вызывает событие Paste в текущем окне. Но как я могу получить доступ к данным буфера обмена или инициировать вставку фактических данных буфера обмена (например, растровое изображение, скопированное в mspaint) в javascript (или с помощью jquery), в то время как пользователь просто нажимает кнопку или div?