Firefox permite que código JavaScript instale plugins de motores de búsqueda, y soporta dos formatos de plugin de motores de búsqueda: OpenSearch, y Sherlock.
Cuando código JavaScript intenta instalar un plugin de búsqueda, Firefox presenta una alerta pidiendo permiso al usuario para instalar el plugin.
Instalando plugins de OpenSearch
Para instalar un plugin de OpenSearch, necesita utlilizar el métodowindow.external.AddSearchProvider()
DOM . El síntaxis de éste método es:
window.external.AddSearchProvider(engineURL);
Donde engineURL es la URL absoluta del archivo XML para el plugin del motor de búsqueda.
Instalando plugins de Sherlock
Para instalar un plugin de Sherlock, necesitará llamar window.sidebar.addSearchEngine()
, el síntaxis para el mismo es:
window.sidebar.addSearchEngine(engineURL, iconURL, suggestedName, suggestedCategory);
- El parámetro
engineURL
es la URL del plugin de Sherlock (un archivo ".src") a instalar. -
iconURL
es la URL a un icono para asociar al plugin. - El parámetro
suggestedName
sólo se usa al pedir permiso al usuario para instalar el plugin, así que un mensaje cómo "Desea instalar suggestedName de engineURL?" podrá mostrarse. - El parámetro
suggestedCategory
no se usa. Debería especificar un valor vacío tipo string (""
) onull
(nulo).
Para detalles de Sherlock, visite https://developer.apple.com/macosx/sherlock/
Detección de la capacidad del motor de búsqueda del navegador
Debido a que las APIs para añadir motores de búsqueda ha cambiado en el paso de la versión 1.5 a la 2 de firefox y ya que Firefox 1.5 no soporta los ficheros de descripción OpenSearch, los desarrolladores web que quieran añadir motores de búsqueda manteniendo la compatibilidad hacia atrás (p.e. que funcione en Firefox 1.5, Firefox 2.0 o IE 7) deben soportar tanto el formato Sherlock como el OpenSearch y deben detectar las capacidades del navegador de acuerdo a ello. El siguiente fragmento de código es un ejemplo de cómo puede hacerse esto:
function installSearchEngine() { if (window.external && ("AddSearchProvider" in window.external)) { // Firefox 2 and IE 7, OpenSearch window.external.AddSearchProvider("https://example.com/search-plugin.xml"); } else if (window.sidebar && ("addSearchEngine" in window.sidebar)) { // Firefox <= 1.5, Sherlock window.sidebar.addSearchEngine("https://example.com/search-plugin.src", "https://example.com/search-icon.png", "Search Plugin", ""); } else { // Sin soporte para motores de búsqueda (IE 6, Opera, etc...). alert("Sin soporte para motores de búsqueda"); } }