Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
Script de inyección de extensión de Chrome solo si la pestaña tiene permiso

Estoy tratando de inyectar secuencias de comandos de contenido a través del comando chrome.tabs.executeScript , pero intenta inyectar en cada pestaña abierta en el navegador. ¿Hay una manera de determinar si la extensión tiene el permiso correcto para la pestaña (en el manifest.json, clave de permissions ) antes de intentar inyectar el script? Mi error es: Unchecked runtime.lastError: Cannot access contents of url "https://exmaple.com/". Extension manifest must request permission to access this host.

mi código es:

 const chromeManifest = chrome.runtime.getManifest(); chrome.tabs.query({}, tabs => { const [script] = chromeManifest?.content_scripts?.[0].js; tabs.forEach(tab => { /* HERE CHECK IF THERE IS PERMISSION FOR THE TAB */ chrome.tabs.executeScript(tab.id, { file: script, }); }); });
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Simplemente lea chrome.runtime.lastError en la devolución de llamada de executeScript para suprimir el error.

 chrome.tabs.executeScript(tab.id, { file }, () => chrome.runtime.lastError);

Como una optimización en caso de que content_scripts de manifest.json matches con un patrón de sitio específico, consulta solo las pestañas que coincidan con este patrón.

Tenga en cuenta que el patrón <all_urls> también coincidirá con las pestañas chrome:// , file:// , chrome-extension:// , mientras que *://*/* solo coincidirá con http:// y https:// .

 chrome.runtime.getManifest().content_scripts.forEach(script => { const params = { runAt: script.run_at, allFrames: script.all_frames, matchAboutBlank: script.match_about_blank, }; // <all_urls> is not supported here so we use an empty array const urlQuery = script.matches.filter(m => m !== '<all_urls>'); chrome.tabs.query({ url: urlQuery }, tab => { script.js.forEach(file => { chrome.tabs.executeScript(tab.id, { ...params, file }, () => { const err = chrome.runtime.lastError; // if (err) console.warn(err.message); }); }); }); });
about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!