javascript - क्रोम एक्सटेंशन: सामग्री स्क्रिप्ट और पृष्ठभूमि के बीच संचार। Html



google-chrome-extension content-script (1)

मैं क्रोम एक्सटेंशन पर नया हूँ मैं सामग्री स्क्रिप्ट और पृष्ठभूमि पृष्ठ के बीच संवाद करने का प्रयास कर रहा हूं। पृष्ठभूमि. html सामग्री स्क्रिप्ट पर एक अनुरोध " नमस्ते " भेजता है, और सामग्री स्क्रिप्ट को " हैलो पृष्ठभूमि " चेतावनी के साथ वापस जवाब देना चाहिए। लेकिन यह अभी नहीं हो रहा है मेरा पृष्ठभूमि कोड है:

function testRequest() {        
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {greeting: "hello"});
    });    
}

content.js कोड:

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.greeting == "hello")
        alert("hello background");
    }
);

popup.html कोड:

<!doctype html>
<html>
    <head></head>
    <body>
        <form>
            <input type="button" value="sendMessage" onclick="testRequest()" />
        </form>    
    </body>
</html>

manifest.json :

{
    "browser_action": {
        "default_icon": "icon.png",
        "popup": "popup.html"
    },
    "background": {
        "page": "background.html"
    },
    "permissions": [
        "tabs",
        "http://*/*",
        "https://*/*",
        "notifications",
        "contextMenus"
    ],
    "content_scripts": [
        {
            "matches": ["http://*/*","https://*/*"],
            "js": ["content.js"]
        }
    ],
    "name": "FirstExtension",
    "version": "1.0"
}

कृपया सहायता कीजिए!


sendRequest / onRequest को sendMessage / onMessage साथ क्रोम में बदल दिया गया है 20. *Message *Request लिए सिर्फ एक उपनाम नहीं है, यह एक अलग एपीआई है

यदि आप क्रोम <20 (कई उबंटू उपयोगकर्ता अभी भी क्रोमियम 18 पर हैं, क्योंकि पीपीए अद्यतन नहीं है) का समर्थन करना चाहते हैं, तो onRequest और sendRequest । अन्यथा, *Message विधियों का उपयोग करें

एक अन्य समस्या यह है कि आपका फ़ंक्शन पृष्ठभूमि पृष्ठ में स्थित है, और कॉल को पॉप-अप में बनाया गया है ये अलग-अलग स्कोप हैं, यदि आप पॉपअप से पृष्ठभूमि पृष्ठ विधि कॉल करना चाहते हैं, तो chrome.extension.getBackgroundPage() उपयोग करें:

chrome.extension.getBackgroundPage().testRequest();

अंतिम नोट: आप मेनिफेस्ट संस्करण 1 और इनलाइन इवेंट हैंडलर का उपयोग कर रहे हैं। अधिक जानकारी के लिए, इस अभ्यास को बहिष्कृत किया गया है, http://code.google.com/chrome/extensions/manifestVersion.html देखें।





content-script