Вставить новые строки в буфер обмена с помощью Javascript - PullRequest
2 голосов
/ 16 октября 2010

Перед любыми запросами я тщательно изучил этот вопрос, и ответ здесь ранее не публиковался.

Я хочу отправить некоторый текст конфигурации в виде простого текста в буфер обмена с Javascript.Текст будет состоять из нескольких команд, по одной команде на строку, чтобы пользователь мог затем вставить его в файл конфигурации на своем ПК (назовите его «myconfig.ini»), используя текстовый редактор (чаще всего Notepad.exe).

Я попробовал следующее:

var cCRLF = String.fromCharCode(10,13);

var cText  = 'This is command line 1'+cCRLF;
cText  += 'This is command line 2'+cCRLF;
cText  += 'This is command line 3'+cCRLF;
cText  += 'This is command line 4';

window.clipboardData.setData('Text', cText);

, но когда я выполняю и вставляю в блокнот,Я не получаю отдельные строки исимвол возврата строки (cCRLF) не отображается(появляется этот мерзкий маленький прямоугольник).

У кого-то есть решение для этого?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2016

Решение состоит в том, чтобы использовать обратную галочку (``)

alert(`string text line 1
string text line 2`);

Для справки: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

0 голосов
/ 16 октября 2010

Я бы предложил использовать какой-либо другой метод, кроме буфера обмена, для отправки данных пользователю. Этот метод работает только в IE и может быть отключен (и новые версии IE запрашивают сначала): Получить данные буфера обмена в виде массива в javascript

Всплывающее окно CSS (которое пользователь может скопировать из себя), вероятно, было бы более хорошим (и кроссплатформенным) решением. Это может помочь: http://www.pat -burt.com / веб-разработка / как сделать-всплывающее окно без открытия-нового-окна /

0 голосов
/ 16 октября 2010

Я думаю, что нашел решение.Это немного странно, но эй, это для IE.Это модифицированный фрагмент, который я нашел в stackoverflow.

<body>
    <a href="#" onclick='test("This\nIS\nA\nTEST")'>TEST</a>
    <div id="cb" style="position: absolute; left: -2000px"></div>
</body>
<script>

function test(cText) {
    cText= cText.replace(/\n\r?/g, "<br>");

    // create an editable DIV and append the HTML content you want copied
    var editableDiv = document.getElementById("cb");
    with (editableDiv) {
        contentEditable = true;
    }     
    editableDiv.innerHTML= cText;          

    // select the editable content and copy it to the clipboard
    var r = document.body.createTextRange();
    r.moveToElementText(editableDiv);
    r.select();  
    r.execCommand("Copy");

    // deselect, so the browser doesn't leave the element visibly selected
    r.moveToElementText(document.body);
    r.select();
}

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...