मैं पहली बार क्रोम एक्सटेंशन बनाने का अभ्यास कर रहा हूं (मैं इसमें बहुत नया हूं)। एक्सटेंशन का उद्देश्य उपयोगकर्ता को फेसबुक या इंस्टाग्राम जैसी कुछ वेबसाइटों तक पहुंचने से रोकना है। अब तक मैं कोड का उपयोग कर रहा हूं जो टैब को बंद कर देगा यदि वे इसे एक्सेस करने और वेबसाइट को ब्लॉक करने का प्रयास करते हैं।

एक अलग HTML फ़ाइल में मेरे पास 2 विकल्प हैं जिन्हें उपयोगकर्ता चुन सकता है - फेसबुक या इंस्टाग्राम को ब्लॉक करने के लिए (2 रेडियो बटन के रूप में)।

पंक्ति 9 जब मैं इसे क्रोम में डालने का प्रयास करता हूं तो मुझे यह त्रुटि मिल रही है:

"अनकॉट टाइप एरर: स्टोरेज.सेट (ऑब्जेक्ट आइटम, वैकल्पिक फ़ंक्शन कॉलबैक) के आह्वान में त्रुटि: कोई मिलान हस्ताक्षर नहीं।"

मैंने इस त्रुटि के बारे में अन्य साइट के स्पष्टीकरण पढ़े हैं और ईमानदारी से उन्हें समझ में नहीं आता क्योंकि मैं कोडिंग में नया हूं। किसी भी मदद की वास्तव में सराहना की जाती है कि कैसे आगे बढ़ना है!


कोड:

document.addEventListener('DOMContentLoaded', function() {
selectCurrentValues();
let saveButton = document.getElementById('save');
if(saveButton) {
    saveButton.addEventListener('click', function() {

    let closingMethodRadios = document.getElementsByName('blockingMethod');
    if(closingMethodRadios[0].checked){
        chrome.storage.sync.set({'blockingMethod': "close_tab"},
        chrome.webRequest.onBeforeRequest.addListener(
            function(details) { return { cancel: true }},
            { urls: ["*://*.facebook.com/*"]},
            ["blocking"]
        ),

        function() {
            console.log('Closing tab set.');
        });
    }
    else if(closingMethodRadios[1].checked){
        chrome.storage.sync.set({'blockingMethod': "close_tab"}, 
        chrome.webRequest.onBeforeRequest.addListener(
            function(details) { return { cancel: true }},
            { urls: ["*://*.instagram.com/*"]},
            ["blocking"]
        ),  
        
        function() {
            console.log('Closing tab set.');
            });
        }
    });
}});

function selectCurrentValues(){
chrome.storage.sync.get('blockingMethod', function (data){
    switch(data.blockingMethod){
        case "close_tab":
            document.getElementById("close_tab").checked = true;
            break;
        case "clear_tab":
            document.getElementById("clear_tab").checked = true;
            break;
            }
        });
    }
1
user14567126 20 नवम्बर 2020, 07:47

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि का अर्थ है कि गलत पैरामीटर निर्दिष्ट हैं।

दस्तावेज़ कहता है दो पैरामीटर निर्दिष्ट किए जा सकते हैं, एक है object और दूसरा वैकल्पिक function है। हालांकि आपका कोड तीन मापदंडों से गुजरता है, दूसरा है कॉलिंग का परिणाम chrome.webRequest.onBeforeRequest.addListener, जो कुछ भी नहीं लौटाता जैसा कि हम दस्तावेज़ीकरण ताकि आपका कोड object, function के बजाय object, undefined, function पास हो जाए।

समाधान

Chrome.webRequest.onBeforeRequest.addListener को chrome.storage.sync.set से पहले या बाद में ले जाएं।

chrome.storage.sync.set({'blockingMethod': 'close_tab'},
  () => console.log('Closing tab set.'));

chrome.webRequest.onBeforeRequest.addListener(
  () => ({cancel: true}),
  {
    urls: ['*://*.facebook.com/*'],
    types: ['main_frame'],
  },
  ['blocking']);
0
wOxxOm 20 नवम्बर 2020, 10:12