Existe-t-il un moyen (simple/intégré) d'ouvrir un nouveau navigateur (je veux dire le navigateur par défaut du système d'exploitation) pour un lien d'Electron au lieu de visiter ce lien dans votre application Electron?
Vous pouvez simplement utiliser:
require("Shell").openExternal("http://www.google.com")
Il existe un moyen bien meilleur et plus simple que ce que @Marcelo a proposé, mais plus facile à implémenter pour tous les liens à la fois à ce que @zianwar a proposé.
const Shell = require('electron').Shell;
// assuming $ is jQuery
$(document).on('click', 'a[href^="http"]', function(event) {
event.preventDefault();
Shell.openExternal(this.href);
});
REMARQUE: nécessite jQuery.
Pour que tous les liens Electron s'ouvrent en externe dans le navigateur du système d'exploitation par défaut, vous devrez leur ajouter une propriété onclick
et modifier la propriété href
afin qu'elle ne charge rien dans l'application Electron.
Vous pouvez utiliser quelque chose comme ceci:
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 = "#";
}
Mais assurez-vous que le document entier a été chargé avant de faire ceci sinon cela ne fonctionnera pas. Une implémentation plus robuste ressemblerait à ceci:
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;
}
N'oubliez pas que si vous chargez des fichiers externes, vous devrez également les faire passer par ce processus après ils sont entièrement chargés.