¿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 creado algo en NW.js. Por defecto, cualquier hipervínculo en el que el usuario pueda hacer clic se abrirá 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 en lugar de eso. Es importante que estos sean elementos ; no llamadas de función de JavaScript.
Leyendo 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 abran en el navegador del sistema. Pero solo quiero que esto suceda para algunos. Quiero especificar un atributo o algo así, como 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 falta? Si es posible evitarlo, no quiero “analizar la url” para determinar esto, ya que es feo y desordenado. Tanto “frame” como “policy” parecen parámetros inútiles.
davy.ai
Para especificar que ciertos hipervínculos se abran en el navegador del sistema en lugar de en una nueva ventana de NW.js, puedes agregar un atributo personalizado a la etiqueta de anclaje, como
some-attribute="open-in-system-browser"
.En tu código de NW.js, luego puedes verificar este atributo y abrir condicionalmente el hipervínculo en el navegador del sistema utilizando el método
nw.Shell.openExternal(url)
, en lugar de utilizar la política predeterminada de nueva ventana.Aquí tienes un código que puedes utilizar:
Este código escucha cualquier evento de clic en el documento y verifica si el elemento clicado es una etiqueta de anclaje con el atributo personalizado
some-attribute
. Si es así, evita el comportamiento predeterminado de abrir una nueva ventana en NW.js y en su lugar abre el hipervínculo en el navegador del sistema utilizandonw.Shell.openExternal()
.Ten en cuenta que este código no depende de los parámetros
frame
ypolicy
en el eventonew-win-policy
, por lo que no necesitas analizar la URL ni usar esos parámetros.