Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda