javascript - एक सामग्री स्क्रिप्ट में श्रोता



jquery google-chrome (1)

किसी पृष्ठभूमि पृष्ठ से एक सामग्री स्क्रिप्ट पर अनुरोध भेजने के लिए जिसे आप chrome.tabs.sendRequest ( chrome.extension.sendRequest नहीं) का उपयोग करने की आवश्यकता है और टैब आईडी प्रदान करें।

सामग्री स्क्रिप्ट में आपको समय-समय पर chrome.extension.onRequest.addListener को बनाने की आवश्यकता नहीं है। chrome.extension.onRequest.addListener अनुरोध। chrome.extension.onRequest.addListener , बस एक बार इसे बनाएं और यह स्थायी रूप से वहां होगा।

संपादित करें

सामग्री स्क्रिप्ट से एक अनुरोध भेजने के लिए आपको chrome.extension.sendRequest को चलाने की आवश्यकता है। chrome.extension.sendRequest अनुरोध करें और एक पृष्ठभूमि पृष्ठ पर chrome.extension.onRequest.addListener

मुझे अपनी समस्या की व्याख्या करें मैं वर्तमान में एक Google क्रोम एक्सटेंशन विकसित कर रहा हूं जो प्रत्येक वेब पेज में एक आइफ्रेम के रूप में टूलबार को इंजेक्ट करता है।

समस्या यह है कि मुझे टूलबार को छिपाने के लिए कुछ मामलों में इसकी ज़रूरत है, इसे फिर से प्रदर्शित करना और इस तरह की बातें। मूलतः मैं अपने श्रोताओं को अपने पृष्ठभूमि पृष्ठ पर डाल करने के लिए सोच रहा था, लेकिन यह बेकार है क्योंकि यह पृष्ठ ग्राफ़िक रूप से हेरफेर नहीं कर सकता। इसलिए मेरी योजना को इस श्रोता को सामग्री_स्क्रिप्ट पर डालना था (जो ग्राफ़िक रूप से ओजेट को हेरफेर कर सकता है)। लेकिन दूसरी समस्या यह है कि पृष्ठभूमि-पृष्ठ के विपरीत एक सामग्री-स्क्रिप्ट सभी समय पर निष्पादित नहीं की जाती है, लेकिन केवल एक बार।

इसलिए मैं खुद से पूछ रहा हूं कि अगर किसी सामग्री-स्क्रिप्ट को पृष्ठभूमि पृष्ठ के समान लगता है, तो उस पर लूप डालकर या ऐसा कुछ कर सकते हैं ...

अग्रिम में धन्यवाद।

मैंने यह कोशिश की है:

manifest.json

{   
    "background_page" : "background.html",
    "browser_action" :
    {
        "default_icon" : "images/extension.png"
        //"popup" : "activateToolbar.html"
    },
    "content_scripts": 
    [ {
          "all_frames": true,
          "css": ["css/yourtoolbar.css"],
          "js": ["js/jquery.js", "js/yourtoolbar.js", "js/listener.js"],
          "matches": ["http://*/*"],
          "run_at": "document_end"
    } ], 
    "permissions" : ["tabs", "unlimitedStorage", "http://*/*", "notifications"],    
    "name" : "YourToolbar",
    "version" : "1.1",
    "description" : "Make your own Toolbar"
}

toolbar.html

<!-- Close Button -->
            <a href="javascript:hideToolbar()"><input type="image" src="images/close.png" name="close" width="18" height="18"></a>

Tool.js

function hideToolbar()
{
    chrome.extension.sendRequest({action : "hideToolbar"});
    window.webkitNotifications.createHTMLNotification('instantMessage.html', 'Ask Show Menu').show();
}

listener.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse){
    if(request.action)
    {
        $('body').remove();
        console.log('Received Start');
        alert(request.action);
        console.log('Received End');
    }
    else
    {
        console.log('nothing');
        alert('Not For Me [listener.js]');
    }
});

background.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) 
{   
    if(request.newTab) 
    {
        // Create a new Tab
        chrome.tabs.create({url: request.newTab});
    }
    else if(request.newWindow)
    {
        // Create a new Window
        chrome.windows.create({url: request.newWindow});
    }
    else if(request.action)
    {       
        chrome.tabs.getAllInWindow(null, function(tabs) {
          $.each(tabs, function() {
            chrome.tabs.sendRequest(this.id, {"action":"hideToolbar"} );
          });
        });
    }
});

लेकिन समस्या यह है कि addListener निष्पादन को ब्लॉक नहीं किया था और वह कुछ भी नहीं पकड़ा था ...





chromium