Una de mis cosas favoritas del navegador web Chrome es lo extensible que es. Parece que hay un complemento de Chrome para casi todo lo que pueda desear.
Pero, ¿alguna vez has querido crear tu propia extensión de Chrome? ¿Alguna vez te has preguntado qué tan difícil sería el proceso o qué implicaría? Bueno, resulta que es muy fácil, probablemente mucho más fácil de lo que jamás imaginó.
En este tutorial, le mostraré cómo crear una extensión básica de Chrome en aproximadamente 5 minutos, ¡no es broma!
Que vamos a construir
Estoy bastante obsesionado con la velocidad de mi sitio web, http://simpleprogrammer.com, por lo que suelo utilizar sitios como GTmetrix para comprobar la velocidad de mi sitio, solo para asegurarme de que no se ralentiza.
A menudo, también consulto otros sitios en los que estoy para ver cómo se comparan.
Bueno, ¿no sería bueno si hubiera una extensión de Chrome que le permitiera usar GTmetrix para verificar la velocidad del sitio de cualquier sitio que estuviera navegando, simplemente haciendo clic en un botón?
Revisé Chrome Web Store y no había una extensión que realizara esta acción, así que eso es exactamente lo que vamos a crear hoy.
¿Qué es una extensión de Chrome?
Antes de comenzar a crear nuestra extensión, probablemente sea una buena idea tener un conocimiento básico de qué es una extensión de Chrome y cómo funcionan las extensiones de Chrome.
En un nivel muy básico, una extensión de Chrome es solo algo de HTML, CSS y JavaScript que le permite agregar algunas funciones a Chrome a través de algunas de las API de JavaScript que Chrome expone. Una extensión es básicamente una página web alojada en Chrome y puede acceder a algunas API adicionales.
En este tutorial, le mostraré cómo crear una extensión básica de Chrome llamada extensión de acción del navegador. Este tipo de extensión coloca un botón en la barra de herramientas de Chrome que mostrará una página HTML al hacer clic y, opcionalmente, ejecutará algo de JavaScript.
Las extensiones de Chrome también se pueden crear para que funcionen solo en ciertas páginas mediante el uso de Acciones de página, pueden ejecutar código en segundo plano usando Páginas de fondo e incluso pueden modificar una página existente cargada en el navegador usando Scripts de contenido. Pero para este tutorial vamos a simplificar las cosas.
Si está interesado en obtener más información sobre las extensiones de Chrome en general, consulte la documentación de extensiones de Chrome.
Paso 1: crea el proyecto
Lo primero que debemos hacer es crear el proyecto y todos los archivos que necesitamos para nuestra extensión. Comencemos por crear un nuevo directorio que llamaremos “Extensión GTmetrix”. Pondremos todos los archivos que necesitamos para nuestra extensión en esta nueva carpeta. Chrome nos permite cargar un complemento apuntándolo a una carpeta que contiene los archivos de extensión.
Todas las extensiones de Chrome requieren un archivo de manifiesto. El archivo de manifiesto le dice a Chrome todo lo que necesita saber para cargar correctamente la extensión en Chrome. Entonces crearemos un archivo manifest.json y lo colocaremos en la carpeta que creamos. Puede dejar el archivo de manifiesto en blanco por ahora.
A continuación, necesitaremos un icono para nuestra extensión. Esto solo debe ser un archivo PNG de 19x19px. Puede obtener un icono de muestra del proyecto de demostración de Google que puede modificar.
A continuación, necesitaremos una página HTML para mostrar cuando un usuario haga clic en nuestra Acción del navegador, por lo que crearemos un archivo popup.html y un archivo popup.js en nuestro directorio “Extensión GTmetrix”.
Debido a restricciones de seguridad, no podemos colocar JavaScript en línea en nuestros archivos HTML dentro de nuestras extensiones de Chrome, por lo que tenemos que crear un archivo separado para contener cualquier código JavaScript que necesitemos y lo haremos referencia desde el archivo HTML.
Paso 2: crea el archivo de manifiesto
Ahora que tenemos nuestra estructura de proyecto básica, necesitamos agregar el código a nuestro archivo de manifiesto para describir nuestro complemento a Chrome.
Abra el archivo manifest.json e ingrese el siguiente código:
{
"manifest_version": 2,
"name": "GTmetrix Analyzer Plugin",
"description": "This extension will analyze a page using GTmetrix",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab"
]
}
La mayoría de los campos en este archivo JSON se explican por sí mismos, por lo que no perderé su tiempo explicándolo todo, pero tome nota de la sección browser_action donde especificamos cuál es el ícono predeterminado y qué página HTML debe mostrarse cuando la acción del navegador se hace clic en el botón.
También notará que agregué una sección de permisos que especifica que necesitamos tener permiso para acceder a activeTab. Esto es necesario para que podamos obtener la URL de la pestaña actual para pasarla a GTmetrix.
Muchas de las API que Chrome expone para que las use con sus extensiones requieren que especifique los permisos que necesite.
Paso 3: crea la interfaz de usuario
El siguiente paso es crear la interfaz de usuario que mostrará nuestra Acción del navegador cuando se haga clic en ella.
Nuestra interfaz de usuario será muy simple y constará de un texto que dice “GTmetrix Analyzer”, seguido de un botón en el que el usuario puede hacer clic para realizar el análisis en la página actual.
Abra la página popup.html y agregue lo siguiente:
<!doctype html>
<html>
<head>
<title>GTmetrix Analyzer</title>
<script src="popup.js"></script>
</head>
<body>
<h1>GTmetrix Analyzer</h1>
<button id="checkPage">Check this page now!</button>
</body>
</html>
Notarás que en este HTML he incluido el script popup.js. Aquí es donde pondremos la lógica para nuestra extensión que se ejecutará cuando se haga clic en el botón con el ID de checkPage.
Paso 4: implementar la lógica
Lo último que debemos hacer para crear el complemento es implementar la lógica que debe ejecutarse cuando un usuario hace clic en “¡Revise esta página ahora!” botón dentro de una pestaña.
Querremos agregar un detector de eventos para escuchar el evento de clic en el botón checkPage. Cuando se hace clic en él, debemos crear un nuevo formulario para enviar a GTmetrix que contiene la URL de la página actual, la envía y luego muestra el resultado.
Abra el archivo popup.js y agregue el siguiente código:
document.addEventListener('DOMContentLoaded', function() {
var checkPageButton = document.getElementById('checkPage');
checkPageButton.addEventListener('click', function() {
chrome.tabs.getSelected(null, function(tab) {
d = document;
var f = d.createElement('form');
f.action = 'http://gtmetrix.com/analyze.html?bm';
f.method = 'post';
var i = d.createElement('input');
i.type = 'hidden';
i.name = 'url';
i.value = tab.url;
f.appendChild(i);
d.body.appendChild(f);
f.submit();
});
}, false);
}, false);
Tomé prestado la mayor parte del código para crear y enviar el formulario del bookmarklet proporcionado en el sitio web de GTmetrix. Acabo de modificar el código para incluir la URL de la pestaña actualmente activa.
Si examina el código anterior, verá que primero estamos registrando un controlador para el evento de clic en el botón checkPage. Luego, cuando se hace clic en el botón, obtenemos la pestaña seleccionada actualmente y ejecutamos algo de JavaScript para crear un formulario con algunos campos ocultos que se envía a GTmetrix. Usamos la URL de la pestaña actual para decirle a GTmetrix para qué página ejecutar la prueba.
Probándolo
Es muy fácil probar una nueva extensión en Chrome. Escriba “chrome: // extensions” en una pestaña para abrir la página de extensiones.