<rmcreative>

RSS

Копируем в буфер обмена без Flash

26 мая 2015

Trello уже довольно продолжительное время позволяет нажать CTRL + C при наведённом на карточку курсоре мыши и получить в буфер обмена ссылку на эту карточку. Удобно, но вроде ничего необычного, я такое уже делал в Stay.com при помощи Flash.

Trello не использует Flash и это заметили пользователи StackOverflow. Через какое-то время подтянулся автор кода и рассказал, как это работает.

На самом деле с буфером обмена Trello не работает. При нажатии CTRL текст пишется в создаваемый <textarea> и туда ставится фокус. То есть когда мы нажимаем C текст копируется. Когда CTRL отпускается, <textarea> скрывается.

Код приведён там же в вопросе на StackOverflow.

Комментарии RSS

  1. №9807
    Сергей
    Сергей 26 мая 2015 г., 11:48:56

    Очень элегантное решение! :) Пусть клиент сам запихает текст в буфер...

    А вот по коду - интересно, откуда взялся такой стиль выставления атрибута:

    container.setAttribute('style', [, 'position: fixed;', ..., 'opacity: 0;'].join('')) ?

    Какбы, более компактно записать все в строку. Убирать значения из такой конструкции столь же неудобно как и из строки. В общем - кроме вреда, никакой пользы не вижу.

    Ну и попридираться... точки с запятой отсутствуют, глаз режет.

  2. №9810
    Евгений
    Евгений 26 мая 2015 г., 13:31:56

    Жаль что нельзя использовать для копирования в буфер по кнопке как на гитхабе команду для клонирования.

  3. №9811
    Sam
    Sam 26 мая 2015 г., 15:57:33

    Евгений, это можно при помощи Flash сделать. Не совсем хорошее решение, но лучше вроде нет.

  4. №9812
    Евгений
    Евгений 26 мая 2015 г., 16:00:05

    Я знаю, но когда увидел заголовок, то подумал, что решили именно эту задачу без flash :(

  5. №9817
    Андрей
    Андрей 27 мая 2015 г., 11:10:39

    Сергей,

    Какбы, более компактно записать все в строку.

    Это некрасиво и в будущем тяжело рефакторить. Так что вариант с массивом лучше

  6. №9818
    Евгений
    Евгений 27 мая 2015 г., 11:13:14

    container.setAttribute('style', [, 'position: fixed;', ..., 'opacity: 0;'].join('')) ?

    Это минифицированный код. Скорее всего в сырцах всё отформатировано как с CSS и выглядит очень красиво.

  7. №9819
    mlapko
    mlapko 27 мая 2015 г., 11:31:40

    не Tello, а Trello - первое слово в посте

  8. №9821
    Sam
    Sam 27 мая 2015 г., 14:54:14

    fixed.

  9. №9822
    Александр
    Александр 27 мая 2015 г., 15:03:54

    А еще есть совсем простое решение:

    <button onclick="prompt('Копировать (Ctrl+C, Enter)', 'текст');">Копировать</button>
    
  10. №9823
    Sam
    Sam 27 мая 2015 г., 18:26:32

    Отвлекает...

  11. №9828
    SImon
    SImon 30 мая 2015 г., 2:10:25

    yiiwheels.com - Вот здесь подобное

  12. №10129
    Fate
    Fate 20 дек. 2015 г., 15:21:46

    zenorocha.github.io/clipboard.js/ Без Flash, используя textarea

  13. №10130
    Sam
    Sam 20 дек. 2015 г., 19:34:11

    Fate, в Safari только не работает.

  14. №11053
    Герман
    Герман 28 июля 2017 г., 18:40:08

    «Fate, в Safari только не работает.»

    Уже работает

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.