• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

144
Vistas
¿Cómo hago para que solo *algunos* enlaces se abran en el navegador del sistema en lugar de las ventanas del navegador NW.js?

He hecho algo en NW.js. De forma predeterminada, cualquier hipervínculo en el que el usuario pueda hacer clic se abre en una nueva ventana del navegador NW.js.

Estoy tratando de hacer que algunos (¡no todos o ninguno!) de estos se abran en el navegador del sistema. Es importante que estos sean elementos <a> ; no llamadas a funciones de JavaScript.

Lectura en esta página: https://nwjs.readthedocs.io/en/latest/References/Window/#event-new-win-policy-frame-url-policy

... Pude hacer que todos los hipervínculos se abrieran en el navegador del sistema. Pero solo quiero esto para algunos . Quiero especificar un atributo o algo, como <a some-attribute="open-in-system-browser"...> que se puede verificar en el código:

 nw.Window.get().on('new-win-policy', function(frame, url, policy) { policy.ignore(); nw.Shell.openExternal(url); });

¿Qué me estoy perdiendo? Si se puede evitar, no quiero "analizar la URL" para determinar esto, ya que es feo y desordenado. Tanto el "marco" como la "política" parecen parámetros inútiles.

almost 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No necesita hacer nada especial, funciona de esa manera por defecto. Todo se abre en NW.js directamente a menos que le indique específicamente que se abra en el navegador predeterminado.

Hay muchas maneras de hacer esto, pero un ejemplo simple sería

 <div> <a href="about.html">About</a> <a href="thing.html">Thing</a> <a href="https://example.com" data-external-link>Example</a> <a href="https://stackoverflow.com" data-external-link>Stackoverflow</a> </div>

Vainilla JS

 // Find all elements on the page var externalLinks = document.querySelectorAll('[data-external-link]'); // Convert the node list to an array externalLinks = Array.from(externalLinks); // loop over each link externalLinks.forEach(function (link) { // add a click event listener to each link link.addEventListener('click', function (evt) { // Do not navigate to the link in NW.js evt.preventDefault(); // get the URl for the clicked link var url = evt.currentTarget.href; // Open the url in the default browser nw.Shell.openExternal(url); }); });

o la versión jQuery

 $('[data-external-link]').click(function (evt) { evt.preventDefault(); nw.Shell.openExternal(evt.currentTarget.href); });
almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda