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

148
Vistas
Faster way of retrieving page Meta tags in Chrome Extension default pop-up?

I am fiddling with this extension which retrieves the title, url, and meta tags from the current tab when the icon is clicked. The data is displayed in the default pop-up, however, the meta data is delayed (by a second or two) due to the use of AJAX. Is there a way to get this information as quickly as using tabs.url and tabs.title for the url and title?

Here is the code from the js file:

chrome.tabs.getSelected(null,function(tab) { // null defaults to current window
    var title = tab.title;
    var url = tab.url;

    document.getElementById("title").innerHTML = title;
    document.getElementById("url").innerHTML = url;


    var txt = "";
    // sample url used here, you can make it more dynamic as per your need.
    // used AJAX here to just hit the url & get the page source from those website. It's used here like the way CURL or file_get_contents (https://www.php.net/manual/en/function.file-get-contents.php) from PHP used to get the page source.
    $.ajax({
        url: url,
        error: function() {
            txt = "Unable to retrieve webpage source HTML";
        }, 
        success: function(response){
            // will get the output here in string format
            // used $.parseHTML to get DOM elements from the retrieved HTML string. Reference: https://api.jquery.com/jquery.parsehtml/
            response = $.parseHTML(response);
            $.each(response, function(i, el){
                if(el.nodeName.toString().toLowerCase() == 'meta' && $(el).attr("name") != null && typeof $(el).attr("name") != "undefined"){
                    txt += $(el).attr("name") +"="+ ($(el).attr("content")?$(el).attr("content"):($(el).attr("value")?$(el).attr("value"):"")) +"<br>";
                    console.log($(el).attr("name") ,"=", ($(el).attr("content")?$(el).attr("content"):($(el).attr("value")?$(el).attr("value"):"")), el);
                }
            });
        },
        complete: function(){
            document.getElementById("desc").innerHTML = txt;
        }
    });
      
  });

This is not a duplicate question. The suggested article that was linked to my question is in regards to inject a div onto the active window. I am trying to retrieve data from it and use it in the default-popup.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Just query the DOM using standard DOM API's and the JavaScript switch to handle the different possible attributes you're interested in.

// Gather all the <meta> elements into a node list and loop over them
document.querySelectorAll("meta").forEach(function(meta){
  // Test for specific values for the name attribute and act accordingly
  switch(meta.name.toLowerCase()){
    case "description":
      console.log("Description: " + meta.content);
      break;
    case "title":
      console.log("Title: " + meta.content);
      break;      
  }
});
<!DOCTYPE HTML>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="description" content="specifically descrpitive content about your page here">
  <meta name="title" content="some page title">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://fonts.googleapis.com/css?family=yourfonthere" rel="stylesheet">
  <title>Page Title Here</title>
</head>
<body>
  <!-- begin page content -->
  <div id="pagewrap">
    <h1 class="header"> Welcome to HTML + CSS!</h1>
    <div id="flexwrapper">

      <div class="box1">
        <p>Box 01 content goes here! </p>
      </div>

      <div class="box2">
        <p>Box 02 content goes here! </p>
      </div>

      <div class="box3">
        <p>Box 03 content goes here! </p>
      </div>

    </div>
    <!--END FLEXWRAP-->
    <footer><span>Awwwwwww yeah<span></footer>
  </div><!--END PAGEWRAP-->
  
</body>
</html>

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