• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

147
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error