2013-08-06 11 views
6

ユーザーが多数の電子メールアドレスをクリップボードにコピーできるようにします。この答えは、それを行うための最も確実な方法のように見えた:テストするときwindow.promptに渡されたテキストは "..."に置き換えられます

How do I copy to the clipboard in JavaScript?

はしかし、私はwindow.prompt()常に...で電子メールのの一部を置き換えることがわかりました。ここで

は、テストデータである:

window.prompt ("To copy emails to clipboard, press: Ctrl+C, then Enter", 
    "[email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]m; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected]; [email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];"); 

JSFiddle:ここ

[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected]; [email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected];[email protected];[email protected];[email protected]; 
[email protected];[email protected]; 

は、以下の試験データとのコード例であるhttp://jsfiddle.net/MkYDz/

クリックして上記のリンクで、コピー&ペーストテキストをテキストエディタに送信すると、半分程度のメールが次のようになります。

[email protected] 

どうしてですか?

+0

どのブラウザを使用していますか? Worksforme。 – Bergi

+0

Chromeでこれを再現できます。 – j08691

+0

Chrome 28、OSX 10.7で動作します。しかし、それがいくつかのブラウザで動作しない場合は、あなた自身の自作のモーダルとテキストエリアを使用する必要があります。 – bfavaretto

答えて

8

プロンプトの文字制限はMVPが言ったような理由のようです。 かなり良い回避策があります。 textareaに電子メールのテキストをコンテンツとして使用し、select関数を使用して、プロンプトと同様にテキストエリア内のテキスト全体を選択します。

例:

$('#container').append('To copy emails to clipboard, press: Ctrl+C, then Enter <br /> 
<textarea id="emailsToCopy">'+emailsToCopy+'</textarea>'); 
$('#emailsToCopy').select().focus(); 

と仮定すると、あなたはjqueryのを使用しています。そうでない場合は、select関数をtextarea DOM要素に使用できます。あなたはjqueryのを使用していない場合

var emailsTxtArea = document.getElementById(emailsToCopy); 
emailsTxtArea.select(); 
emailsTxtArea.focus(); 
7

window.prompt()関数はChromiumでは2000文字に制限されています。入力文字列がこの制限を超えている場合(例では2059文字)、入力文字列はドットで区切られた中央で切り取られます。これはellipsisと呼ばれます。

はここで正確に2000文字を使ってデモンストレーション(私はXXXで、最後の3つの文字を置き換え)です:http://jsfiddle.net/MkYDz/2/

;[email protected]"); 
2

私はJiteshの答えにコメントですより多くの評判ポイントを持っていた場合...

、あなたはこれを行うことはできません。

emailsTxtArea.select().focus(); 

代わりに、これを行う必要があります:

emailsTxtArea.select(); 
emailsTxtArea.focus(); 

通常のJavaScriptでは、selectメソッドはオブジェクトを返しません。

関連する問題