Как на JavaScript скопировать текст в буфер обмена кроссбраузерно?

JavaScript, Вопросы и ответы
20 февраля 2012

Вопрос

Как можно скопировать какой-нибудь текст в буфер обмена, если это вообще возможно? Я попытался использовать эту функцию, которую нашёл в интернете:

function copyToClipboard(text)
{
    if (window.clipboardData) // IE
    {  
        window.clipboardData.setData("Text", text);
    }
    else
    {  
        unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
        const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);  
        clipboardHelper.copyString(text);
    }
}

Но Chrome, Explorer и Opera выдают ошибку, а Firefox показывает всплывающее окно с запросом разрешений на эту операцию, а в случае согласия таки копирует. Существует ли приемлемое решение этой задачи? Сомневаюсь конечно, но мало ли...


Ответ №1

Есть библиотека, которая работает, если установлен 10-й флеш плеер и выше. Конечно, я понимаю Ваше негодование: надоел этот никак не умирающий флеш и всё такое. Но выбирайте - либо так, либо никак. По крайней мере я решения пока не встречал.


Ответ №2

Автоматическое копирование в буфер обмена связано с дополнительными рисками, поэтому большинство нормальных браузеров блокируют эту возможность. Политика безопасности, понимаешь.
Лично я в такой ситуации использую следующий трюк:

function copyToClipboard (text) {
    window.prompt ("Чтобы скопировать текст в буфер обмена, нажмите Ctrl+C и Enter", text);
}

Пользователь получает вопросительное окно, в котором весь текст для копирования уже выделен. Осталось только нажать Ctrl+C и Enter (чтобы закрыть окно). Эта операция полностью безопасна, поскольку пользователь производит копирование в буфер самостоятельно. И, конечно, метод работает во всех браузерах.

1 комментарий

  • WilliamOxype:

    Пишем и размещаем реалистичные отзывы, о Вашем сайте, Вашем бизнесе,
    вашей компании!!!!!

    Добрый день!
    Как вы думаете, положительные отзывы о вашей компании
    в интернете увеличивают ваши продажи?
    Мы уверены, что ваши клиенты интересуются тем, что пишут о вас в интернете.
    У нас есть замечательное решение для вас — написание и размещение положительных
    отзывов о вас в интернете.
    По ссылке вы можете сделать заказ отзывов с хорошей скидкой
    Интересно?

    http://clck.ru/C4mKx

Добавить комментарий


(обязательно)