2013-02-21 14 views
6

我想從我創建一個Chrome擴展到剪切板寫一些數據。 在manifest文件中我給的權限都clipboardRead和clipboardWrite。爲什麼document.execCommand(「copy」)在我的Chrome擴展的內容腳本中不起作用?

我使用這個功能,我發現here

,但它不工作。似乎「document.execCommand('copy');」無法工作。

我寫這些代碼的內容腳本。

THX 清單:

{ 
    "manifest_version":2, 

    "name":"easyCopy", 
    "description":"just a small toll", 
    "version":"1.0.0", 

    "permissions":[ 
     "clipboardWrite", "http://*/*", "clipboardRead" 
    ], 

    "content_scripts":[ 
     { 
      "matches":["http://*/*"], 
      "js":["jquery-1.9.1.min.js", "main_feature.js"] 
     } 
    ], 

    "background":{ 
     "persistent":false, 
     "page":"background.html" 
    } 
} 

main_feature.js:

copyOrderId(); 
function copyOrderId() { 
    $(".order-num").click(function() { 
     var curOrderNum = $(this).text(); 
     copyTextToClipboard(curOrderNum); 
//  chrome.extension.sendMessage({method:"copy", content:curOrderNum}, function (response) { 
//   clog(response); 
//  }); 
    }); 


} 

function copyTextToClipboard(text) { 
    var copyFrom = $('<textarea/>'); 
    copyFrom.text(text); 
    $('body').append(copyFrom); 
    copyFrom.select(); 
    document.execCommand('copy', true); 
    copyFrom.remove(); 

} 
function clog(message) { 
    console.log(message); 
} 

的background.html僅僅是基本的HTML身體一個空白頁。

+1

分享您完整的相關代碼,包括清單等 – Sudarshan 2013-02-22 09:14:32

+0

THX,我編輯我的問題,並分享他們都 – 2013-02-22 10:14:58

回答

8

謝謝大家,我結束了使用此:

document.execCommand不能在內容腳本工作。 相反,我將數據發送給後臺頁面,然後運行「copyTextToClipboard」功能。

請注意,你必須把你的JavaScript爲單js文件與background.html混合它代替。

此外,文本區域必須有一個idclass財產。

+0

的你能進一步澄清?如果我在基於內容腳本的js文件中定義隱藏字段,我可以在後臺訪問其值以進行復制嗎? – Volatil3 2013-12-04 18:30:48

+0

@ Volatil3:對不起,我沒有看到您的評論。在你的背景中定義一個隱藏字段,然後你可以複製它。如果您想要複製內容腳本中的任何內容,則必須使用Chrome的MessagePassing API將數據發送到後臺。 – 2014-01-03 02:50:39

+0

此bug已被固定在Chrome 39 - 見https://code.google.com/p/chromium/issues/detail?id=395376 – 2014-09-11 10:17:09

相關問題