Czy jest jakiś (prosty/wbudowany) sposób, aby otworzyć nową przeglądarkę (mam na myśli domyślną przeglądarkę) okno dla łącza od Electron zamiast odwiedzać ten link w twojej aplikacji Electron?Utwórz łącze z elektronu otwartego w przeglądarce
Odpowiedz
można po prostu użyć:
require("shell").openExternal("http://www.google.com")
Aby wszystkie linki Electron otworzyć zewnętrznie w domyślnej przeglądarce OS trzeba będzie dodać właściwość onclick
do nich i zmienić właściwość href
więc nie ładuje wszystko w aplikacji Electron.
Można użyć coś takiego:
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 = "#";
}
Ale upewnić się, że cały dokument został załadowany przed robi tego inaczej nie będzie działać. Bardziej solidna realizacja będzie wyglądać następująco:
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;
}
Pamiętaj, że jeśli załadować pliki zewnętrzne trzeba będzie zrobić im przejść przez ten proces, jak również po są w pełni załadowany.
Istnieje znacznie lepszy i prostszy sposób niż proponowany przez @Marcelo, ale łatwiejszy do wdrożenia dla wszystkich linków na raz, do zaproponowanego przez @zianwar.
const shell = require('electron').shell;
// assuming $ is jQuery
$(document).on('click', 'a[href^="http"]', function(event) {
event.preventDefault();
shell.openExternal(this.href);
});
Aby uruchomić projekt Electron w aktualnej przeglądarki (Chrome, Mozilla itp), dodać do tego skryptu jest skrypt zewnętrznego:
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 = "#";
}
lepszą odpowiedź tutaj: http: // stackoverflow. com/questions/32402327/how-can-i-force-external-links-from-browser-window-to-open-in-default-browser –