Esiste un modo (semplice/built-in) per aprire una nuova finestra browser (intendo browser predefinito OS) per un collegamento da Electron invece di visitare quel collegamento all'interno dell'app Electron?Crea un collegamento da Electron aperto nel browser
risposta
Si può semplicemente utilizzare:
require("shell").openExternal("http://www.google.com")
Per rendere tutti i link per aprire Electron esternamente nel browser predefinito del sistema operativo si dovrà aggiungere una proprietà onclick
a loro e modificare la proprietà href
in modo che non si carica qualsiasi cosa nell'app Electron.
si potrebbe usare qualcosa di simile:
aTags = document.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
aTags[i].href = "#";
}
Ma assicurarsi l'intero documento è stato caricato prima fare questo altrimenti non è andare a lavorare. Un'implementazione più robusta sarebbe simile a questa:
if (document.readyState != "complete") {
document.addEventListener('DOMContentLoaded', function() {
prepareTags()
}, false);
} else {
prepareTags();
}
function prepareTags(){
aTags = document.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
aTags[i].href = "#";
}
return false;
}
Ricordate che se si carica file esterni si dovrà farli passare attraverso questo processo così dopo sono a pieno carico.
C'è un modo molto migliore e più semplice di quello proposto da @Marcelo, ma più semplice da implementare per tutti i collegamenti contemporaneamente a ciò che @zianwar ha proposto.
const shell = require('electron').shell;
// assuming $ is jQuery
$(document).on('click', 'a[href^="http"]', function(event) {
event.preventDefault();
shell.openExternal(this.href);
});
Per eseguire un progetto Electron nel tuo browser attuale (Chrome, Mozilla, ecc), aggiungere questo al vostro script sono script esterno:
aTags = document.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
aTags[i].setAttribute("onclick","require('shell').openExternal('" + aTags[i].href + "')");
aTags[i].href = "#";
}
migliore risposta qui: http: // StackOverflow. it/questions/32402327/how-can-i-force-link-esterni-from-browser-window-to-open-in-a-default-browser –