2013-02-21 40 views
6

मैं कुछ क्रोम एक्सटेंशन से क्लिपबैड में कुछ डेटा लिखना चाहता हूं जो मैं बना रहा हूं। मैनिफेस्ट फ़ाइल में मैंने क्लिपबोर्ड रीड और क्लिपबोर्ड दोनों को अनुमतियां दीं।क्यों document.execCommand ("copy") मेरे क्रोम एक्सटेंशन की सामग्री स्क्रिप्ट में काम नहीं करता है?

मैं इस समारोह जो मैं 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 सिर्फ बुनियादी एचटीएमएल शरीर के साथ एक रिक्त पृष्ठ है।

document.execCommand सामग्री स्क्रिप्ट में काम नहीं कर सकते हैं:

+1

मैनिफेस्ट इत्यादि सहित अपना पूरा प्रासंगिक कोड साझा करें – Sudarshan

+0

thx, मैंने अपना प्रश्न संपादित किया और उन सभी को साझा किया –

उत्तर

8

सभी को धन्यवाद, मैं इस का उपयोग कर समाप्त हो गया। इसके बजाय, मैं पृष्ठभूमि पृष्ठ पर डेटा भेजता हूं और फिर "copyTextToClipboard" फ़ंक्शन चलाता हूं।

ध्यान दें कि आपको अपनी जावास्क्रिप्ट को background.html के साथ मिश्रित करने के बजाय एकल .js फ़ाइल में रखना होगा।

इसके अतिरिक्त, टेक्स्टरेरा में id या class संपत्ति होनी चाहिए।

+0

क्या आप आगे स्पष्टीकरण दे सकते हैं? अगर मैं अपनी सामग्री स्क्रिप्ट आधारित जेएस फ़ाइल में एक छिपी हुई फ़ील्ड को परिभाषित करता हूं, तो क्या मैं प्रतिलिपि उद्देश्य के लिए पृष्ठभूमि में अपना मान जोड़ सकता हूं? – Volatil3

+0

@ Volatil3: क्षमा करें, मुझे आपकी टिप्पणी नहीं मिली। पृष्ठभूमि में एक छिपे हुए क्षेत्र को परिभाषित करें, फिर आप इसे कॉपी कर सकते हैं। यदि आप सामग्री स्क्रिप्ट में किसी भी चीज़ की प्रतिलिपि बनाना चाहते हैं, तो आपको क्रोम के संदेशपैसिंग एपीआई के साथ डेटा को पृष्ठभूमि में भेजना होगा। –

+0

यह बग क्रोम 39 में तय किया गया है - https://code.google.com/p/chromium/issues/detail?id=395376 देखें –