エラー:キャッチされていないTypeError:storage.set(オブジェクトアイテム、オプションの関数コールバック)の呼び出しでエラーが発生しましたChrome拡張機能

user14567126

私は初めてChrome拡張機能を構築する方法を練習しています(私はこれで非常に新しいです)。拡張機能の目的は、ユーザーがFacebookやInstagramなどの特定のWebサイトにアクセスできないようにすることです。これまでのところ、タブにアクセスしてWebサイトをブロックしようとすると、タブを閉じるコードを使用しています。

別のHTMLファイルには、ユーザーが選択できる2つのオプションがあります-FacebookまたはInstagramをブロックする(2つのラジオボタンとして)。

9行目Chromeに入れようとすると、次のエラーが発生します。

「UncaughtTypeError:storage.set(オブジェクトアイテム、オプションの関数コールバック)の呼び出しエラー:一致する署名がありません。」

このエラーに関する他のサイトの説明を読みましたが、コーディングに慣れていないため、正直に理解できません。どんな助けでも前進する方法で本当にありがたいです!


コード:

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;
            }
        });
    }
wOxxOm

エラーは、間違ったパラメーターが指定されていることを意味します。

ドキュメントには、 2つのパラメータを指定できると記載されています。1つはobjectオプションで、もう1つはオプションですfunctionただし、コードは3つのパラメーターを渡します。2つ目はchrome.webRequest.onBeforeRequest.addListenerを呼び出した結果でありドキュメントに示されているように何も返さないため、コードobject, undefined, functionobject, function。の代わりに渡されます

解決

chrome.storage.sync.setの前または後にchrome.webRequest.onBeforeRequest.addListenerを移動します。

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']);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ