2016-03-04 7 views
1
function Copy() // this function will be latched to a button later on. 
{ 
    var text = writePreview(); // this pours in the formatted string by the writePreview() function to the variable 'text' 
    text = br2nl(text); //variable 'text' is purified from <br/> and is replaced by a carriage return 

    //I need some code here to pour in the contents of the variable 'text' to the clipboard. That way the user could paste the processed data to a 3rd party application 
} 

Я создаю автономное клиентское веб-приложение. Основная цель этого заключается в том, чтобы вводить пользователя в поля, форматировать текст таким образом, чтобы он соответствовал определенным критериям, а затем нажмите «Копировать», чтобы они могли вставить его в сторонний CRM.Как поместить содержимое переменной в буфер обмена с помощью javascript?

Доступный браузер для этого - Google Chrome. Я просмотрел интернет, надеясь найти простое решение для этого.

Меня не интересует безопасность, так как это приложение не будет опубликовано и предназначено только для использования в автономном режиме.

Я хочу, чтобы это было как можно проще, и добавление невидимого textarea разрушает макет. Вспышка не разрешена в моей текущей среде.

+1

Возможный дубликат [Как скопировать в буфер обмена в JavaScript?] (Http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) –

ответ

1

это была решена путем обновления моего браузера (Google Chrome V49). Я использовал более низкую версию (v34).

обнаружили, что более поздние версии (v42 +) из Google Chrome поддерживает document.execCommand('copy')

Я надеюсь, что это помогает людям

здесь функции, которые я использовал:

function SelectAll(id) 
{ 
    document.getElementById(id).focus(); 
    document.getElementById(id).select(); 
} 

function copy() 
{ 
    SelectAll('textAreaID'); 
    document.execCommand("Copy", false, null); 
} 
2

Посмотрите на clipboard.js

Современный подход, чтобы скопировать текст в буфер обмена

Нет Flash. Никаких зависимостей. Просто 2К архивированная

https://clipboardjs.com/

+0

Я читал об этом, и я потерялся, когда он сказал: «Теперь вам нужно создать экземпляр, передав селектор DOM, элемент HTML или список элементов HTML». Я действительно не знаю, как применить это к моему коду. Если бы вы могли пролить свет на это или представить простой пример, я был бы признателен. –

+0

Кратко о том, где вы заблудились. Я согласен с комментарием seahorsepip. –

+0

1. Я не копирую с элемента 2. Я не разрезаю контент из элемента 3. он не выражает, как отправить данные-буфер обмена-текст в переменную. Хотя я признаю, что я не настолько эксперт, как вы могли бы звучать, вот почему я задаю вопрос, потому что я уже прочитал немало вещей и не понял, как применить его к моему текущему проекту. Я сделал эту работу раньше в IE в прошлом, однако, поскольку у меня есть только Google Chrome для работы прямо сейчас, именно по этой причине я задаю вопрос. –

0

Согласно this article «В JavaScript копирование значения из переменной в буфер обмена не является простым, так как нет прямой команды. ".

Поэтому, как предложил там я сделал следующее:

  • определены следующие в HTML файл - я добавил в нижней части (я не заметил элемента, добавляемого и удаляется):

    <div id="container"/>

  • затем в Javascript я добавил:

    function copyQ() {

    var container = document.getElementById("container"); 
        var inp = document.createElement("input"); 
        inp.type = "text"; 
        container.appendChild(inp); 
        inp.value = "TEST_XYZ"; 
        inp.select(); 
        document.execCommand("Copy"); 
        container.removeChild(container.lastChild); 
        alert("Copied the text: " + inp.value); 
    } 
    

Может быть, есть лучший способ, но это работает для меня.

UPDATE:

Кроме того, я обнаружил, что, если ваш текст многострочный и если вы используете вход типа текста весь текст преобразуется в одну текстовую строку.

Чтобы абзацы/отдельные строки, я пытался использовать текстовое поле и текст копируется как есть - многоканальная линия:

var inp = document.createElement("textarea"); 
    //inp.type = "text"; 

Надеется, что это поможет кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^