私は初めて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;
}
});
}
エラーは、間違ったパラメーターが指定されていることを意味します。
ドキュメントには、 2つのパラメータを指定できると記載されています。1つはobject
オプションで、もう1つはオプションですfunction
。ただし、コードは3つのパラメーターを渡します。2つ目はchrome.webRequest.onBeforeRequest.addListenerを呼び出した結果であり、ドキュメントに示されているように何も返さないため、コードobject, undefined, function
はobject, 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]
コメントを追加