Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
Extensión de Chrome No puedo obtener el título de la pestaña correctamente en mi historial de extensiones personalizadas

Estoy desarrollando un complemento para Chrome y tiene la función Historial en el complemento. Por ejemplo, al hacer clic en el botón se crea una nueva pestaña y se guarda la dirección URL en el historial. Así que esta función funciona bien. Pero quiero obtener los datos del título del documento de la pestaña que se abrió en el pasado en lugar de la dirección URL. Intenté hacer esto con tabs[tabs.length-1].title pero no obtuve el título de la pestaña abierta. En su lugar, obtuvo el título de la última pestaña que ya estaba abierta. Supongo que este es el problema porque la pestaña aún no está abierta. ¿Como puedo resolver esto? ¿Puedes ayudarme por favor?

Esta es mi función de creación de pestañas (si la pestaña ya está abierta, no la vuelva a abrir):

 function openTab(tab_url) { var isTabActive = false; var tabId = 0; var tabTitle = ""; totalHistoryContent++; chrome.tabs.query({}, function(tabs) { for(var i=0;i<tabs.length;i++) { if(tabs[i].url.toLowerCase().includes(tab_url.toLowerCase()) == true) { isTabActive = true; tabId = tabs[i].id; tabTitle = tabs[i].title; // WORKING NICE break; } } if(isTabActive == false) { chrome.tabs.create({ url:tab_url }); tabTitle = tabs[tabs.length - 1].title; // NOT WORKING CORRECTLY } else{ chrome.tabs.update(tabId, {selected: true}); chrome.tabs.reload(tabId); } alert(tabTitle); }); if(tab_url !== "chrome-extension://" + chrome.runtime.id + "/popup.html" && tab_url !== "chrome://extensions/?id=" + chrome.runtime.id) { setHistory(tabTitle,49); //THIS FUNCTION SAVE TITLE TO HISTORY } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una de las formas en que puede manejar este problema es enviar una solicitud ajax a la URL de la página.

 var xmlHttp = new XMLHttpRequest(); xmlHttp.open('GET', 'tab_url', true); xmlHttp.onreadystatechange = function () { if ( this.readyState == 4 && ((this.status >= 200 && this.status < 300) || this.status == 304) ) { var data = this.responseText; var contentType = this.getResponseHeader("Content-Type"); //no i18n if (contentType && contentType.match('text/html')) { var doc = new DOMParser().parseFromString(data, "text/html"); console.log(doc.title); } } }; xmlHttp.send();

Nota: Esto puede arrojar un error de CORS en la mayoría de las páginas, así que no olvide agregar "<all_urls>" en los permisos en el manifiesto (suponiendo que esté utilizando el manifiesto V2).

 "permissions": [ "<all_urls>" ],

Si está utilizando el manifiesto V3, que es el recomendado, consulte esta documentación sobre permisos

Otra forma es enviar un mensaje desde chrome.tabs.create devolución de llamada exitosa al script de contenido, si no usa el script de contenido, debe inyectar el código. En la respuesta del mensaje, puede enviar el título del documento usando document.title .

De cualquier manera, ambos serán asíncronos ...

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda