3

質問する前に、私はこれを徹底的に調査しましたが、回答は以前にここに投稿されていません.

Javascript を使用して、プレーン テキストの構成テキストをクリップボードに送信したいと考えています。myconfig.iniテキストは複数のコマンドで構成され、1 行に 1 つのコマンドが含まれているため、ユーザーはテキスト エディター (最も一般的には Notepad.exe) を使用して PC の構成ファイル (" " と呼びます) に貼り付けることができます。

私は次のことを試しました:

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) が表示されません
(厄介な小さなボックス文字が表示されます)。

誰かがこれに対する解決策を持っていますか?

4

3 に答える 3

3

解決策は、バックティック (` `) を使用することです

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

参照用: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

于 2016-02-02T14:40:24.343 に答える
0

私は解決策を見つけたと思います。少し変ですが、これは 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>
于 2010-10-16T18:59:14.147 に答える
0

ユーザーにデータを送信するには、クリップボード以外の方法を使用することをお勧めします。このメソッドは IE でのみ機能し、無効にすることができます (新しい IE バージョンでは最初にプロンプ​​トが表示されます): Get clipboard data as array in javascript

CSS ポップアップ ボックス (ユーザーが自分自身からコピーできる) は、おそらくより優れた (そしてクロスプラットフォームの) ソリューションです。これが役立つかもしれません: http://www.pat-burt.com/web-development/how-to-do-a-css-popup-without-opening-a-new-window/

于 2010-10-16T19:06:16.443 に答える