2013-02-21 15 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

相关问题