2013-08-06 16 views
6

我想允許用戶將大量電子郵件地址複製到其剪貼板。這個答案似乎是最可靠的方式做到這一點:傳遞給window.prompt的文本被替換爲「...」

How do I copy to the clipboard in JavaScript?

不過,測試時我發現,window.prompt()總是替換與...的電子郵件一個一部分。

下面是測試數據:

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

下面是示例代碼用下面的測試數據:

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]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected]; [email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [email protected];[email protected];[email protected];[email protected];[email protected]; 
    [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:http://jsfiddle.net/MkYDz/

點擊上面的鏈接,複製和粘貼文本添加到文本編輯器中,您將看到其中一封電子郵件(大約一半)變爲:

[email protected] 

這是爲什麼發生?

+0

您正在使用哪種瀏覽器? WORKSFORME。 – Bergi

+0

我可以使用Chrome再現這一點。 – j08691

+0

適用於Chrome 28,OSX 10.7。但是,如果它在某些瀏覽器中不起作用,則必須使用自己的自制模式和textarea。 – bfavaretto

回答

8

的字符數限制的提示似乎像MVP說的原因。 它有一個相當好的解決方法。 使用textarea作爲其內容的電子郵件文本,並使用select函數來選擇textarea中的整個文本,就像您對提示進行的操作一樣。

實施例:

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

假設,則使用jquery。如果沒有,你可以在textarea DOM元素上使用select函數。

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

Chromium中的window.prompt()函數被限制爲2000個字符。如果輸入字符串超過此限制(您的示例中有2059個字符),則輸入字符串將在中間用點標記。這被稱爲ellipsis

下面是使用完全相同2000個字符(我更換了最後三個字符用XXX)演示:http://jsfiddle.net/MkYDz/2/

;[email protected]"); 
2

如果我有更多的聲譽分,我將在Jitesh的答案評論...

如果你不使用jQuery,你不能做到這一點:

emailsTxtArea.select().focus(); 

相反,你必須這樣做:

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

在普通的javascript中,select方法不返回對象。