2016-03-04 58 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 
} 

我正在構建一個離線的客戶端Web應用程序。這樣做的主要目的是讓用戶輸入字段,格式化文本使其符合特定條件,然後單擊複製,以便將其粘貼到第三方CRM。如何使用JavaScript將變量的內容放入剪貼板?

唯一可用的瀏覽器是Google Chrome。我搜索了互聯網,希望找到一個簡單的解決方案。

我不關心安全性,因爲這個應用程序不會被髮布,只是爲了脫機使用。

我想保持它儘可能簡單,並添加不可見的textarea破壞佈局。我目前的環境中不允許使用Flash。

+1

可能重複[如何在JavaScript中複製到剪貼板?](http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) –

回答

1

這是通過更新我的瀏覽器(谷歌瀏覽器V49)解決。我正在使用較低版本(v34)。

發現,谷歌瀏覽器的更新版本(V42 +)支持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

現代的方法來複制文本到剪貼板

不使用閃光燈。沒有依賴關係。只是2KB gzip壓縮

https://clipboardjs.com/

+0

我已經閱讀了這篇文章,當它說: 「現在,你需要通過傳遞一個DOM選擇器,HTML元素或HTML元素列表來實例化它。」 我真的不知道如何將其應用於我的代碼。如果你能夠闡明這一點或者提供一個簡單的例子,我會很感激。 –

+0

簡要說明你迷路的地方。我同意seahorsepip的評論。 –

+0

1.我不是從元素中複製 2.我不是從元素中刪除內容 3.它沒有表達如何將數據剪貼板文本發送到變量。 雖然我承認,我不像你聽起來那麼專業,這就是爲什麼我問這個問題的原因,因爲我已經閱讀了很多東西,還沒有理解如何將它應用到我目前的項目中。 我以前在IE中做過這項工作,但是因爲我現在只有谷歌瀏覽器才能使用,這就是我提出這個問題的原因。 –

0

this article「在JavaScript中,由於沒有直接命令,將變量中的值複製到剪貼板並不容易。「

因此所建議有我做了以下:

  • 定義在HTML文件中的以下 - 我在底部加入(I從來沒有注意到添加元素和被移除):

    <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"; 

希望它可以幫助別人。

相關問題