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

219
Vistas
Recibo el error "Las pestañas no se pueden editar en este momento (el usuario puede estar arrastrando una pestaña)" en el evento de actualización/activación/enfoque de pestaña en Chrome 91

Después de la actualización reciente de Chrome, mi extensión comenzó a activar "Unchecked runtime.lastError: las pestañas no se pueden editar en este momento (el usuario puede estar arrastrando una pestaña)" cuando intento usar la API de chrome.tabs. Todavía no hay mucha información sobre este problema, pero creo que se trata de un error del navegador. Mientras tanto, mi extensión hace que las pestañas de Chrome cambien notablemente más lento de lo que solía ser. Ahora toma un par de segundos cambiar la pestaña. Así que estoy buscando una solución.

Alguna idea de cómo solucionar este problema?

over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

La única solución que he encontrado hasta ahora es poner a mis controladores en un tiempo de espera como este:

 chrome.tabs.onActivated.addListener((activeInfo) => { setTimeout(() => { // The old listener handler moves here }, 100); });

Pero debe haber una mejor manera, ¿verdad?

over 4 years ago · Santiago Trujillo Denunciar

0

Seguirá recibiendo errores, pero al menos funcionará.

 chrome.tabs.onActivated.addListener(function(activeInfo) {getActivatedTab();}); function getActivatedTab(){ chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) { try{ if(tabs[0]!=undefined){ console.log(tabs[0].url); } } catch(err){ setTimeout(function() { getActivatedTab(); },100); } }) }
over 4 years ago · Santiago Trujillo Denunciar

0

Este es un error en Chrome91, como lo señaló @wOxxOm.

Se sugiere este parche si está haciendo muchas llamadas a, por ejemplo xchrome.tabs.query

 const ChromeWrapper = { chromeTabsQuery: function (params, callback) { chrome.tabs.query(params, tabs => { if (chrome.runtime.lastError) { setTimeout(function () { //console.warn("Patch for xchrome.tabs.query (Chrome 91)."); ChromeWrapper.chromeTabsQuery(params, callback) }, 100); // arbitrary delay } else { callback(tabs) } }) } }

Y luego, simplemente reemplace las instancias de

 xchrome.tabs.query(...

con:

 ChromeWrapper.chromeTabsQuery(...
over 4 years ago · Santiago Trujillo Denunciar

0

... Muy bien, no tengo una solución realmente mejor que setTimeout, ya que realmente no veo dónde se publican los mensajes/eventos después de que se completó la pestaña, así que lo que hago también es agregar un setTimeout para hacer algo " prueba y error".

Pero cómo lo hago es anular el chrome.tabs.get original para que podamos tener la misma experiencia mientras lo usamos de la manera esperada. (Y eliminar fácilmente este fragmento cuando finalmente lo arreglen algún día)

Aquí está mi código, saludos

 chrome.tabs.get = function () { const orig_get = chrome.tabs.get.bind(chrome.tabs); return async function (tabId) { return new Promise( resolve => { var tryGet = () => { orig_get(tabId) .then(resolve) .catch(() => { // console.log("retry get"); setTimeout(() => { tryGet(tabId); }, 50); }) }; tryGet(); } ) } }();
over 4 years ago · Santiago Trujillo Denunciar

0

cree una función separada fuera de chrome.tabs.onActivated.addListener. de esta manera funciona para mí.

 function insertScript(tab) { chrome.tabs.get(tab.tabId, function (info) { console.log(info); }); } chrome.tabs.onActivated.addListener(function (tab) { setTimeout(function () { insertScript(tab); }, 500); });
over 4 years ago · Santiago Trujillo 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