• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

196
Views
las URL no se bloquean mientras se trabaja con chrome.webRequest api

He almacenado algunas URL en chrome.storage.sync como a continuación...

 sitesToBeBlocked: { "https://www.google.com/":"https://www.google.com/" , "https://www.example.com/": "https://www.example.com/" }

Ahora estoy tratando de bloquear estas direcciones URL usando el siguiente código...

Manifiesto.json

 { "name": "chrome extension", "description": ".............", "version": "0.0.1", "manifest_version": 2, "background": { "scripts": ["/scripts/background/background.js"] }, "content_scripts": [ { "matches": ["https://*/*","http://*/*"] , "js": ["/scripts/content/jquery-3.6.0.js","/scripts/content/content-script.js"] } ], "permissions": ["storage","unlimitedStorage","webRequest","webRequestBlocking","*://*/*"], "browser_action": { "default_popup": "/popup/popup.html", "default_icon": { ............ } }, "options_ui": { "page": "/options/options.html", "open_in_tab": true }, }

fondo.js

 function isRequestCancelled(sitesArray, url){ return sitesArray.includes(url); } function blockListener (details) { chrome.storage.sync.get(null, (items)=>{ var sitesArray = Object.keys(items['sitesToBeBlocked']); return { cancel: isRequestCancelled(sitesArray, details.url ) }; }); } chrome.webRequest.onBeforeRequest.addListener( blockListener ,{ urls: ["<all_urls>"], types: [ 'main_frame' ] }, ['blocking'] );

Pero las URL no están bloqueadas , no sé cuál es el problema... por favor, ayúdenme a encontrar el problema exacto al que me enfrento...

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Descubrí el problema en mi código yo mismo ...

En realidad, el problema aquí es que la devolución de llamada de chrome.storage.sync es una función asíncrona. Debido a lo cual, la devolución de llamada de chrome.webRequest finaliza antes de la devolución de llamada de chrome.storage.sync .

La solución puede ser,

Coloque todo dentro de la devolución de llamada de chrome.storage.sync , de modo que todas las funciones regresen después de que se ejecute la devolución de llamada de chrome.storage.sync .

Finalmente he solucionado este problema con el código modificado a continuación....

 chrome.storage.sync.get(null,(items)=>{ function isRequestCancelled(sitesArray, url){ return sitesArray.includes(url); } function blockListener (details) { var sitesArray = Object.keys(items['sitesToBeBlocked']); return { cancel: isRequestCancelled(sitesArray, details.url ) }; } chrome.webRequest.onBeforeRequest.addListener( blockListener ,{ urls: [" <all_urls>"], types: [ 'main_frame' ] }, ['blocking'] ); });

La pista real se obtiene de la consulta relacionada

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error