2015-07-31 9 views

Odpowiedz

22

można po prostu użyć:

require("shell").openExternal("http://www.google.com") 
+3

lepszą odpowiedź tutaj: http: // stackoverflow. com/questions/32402327/how-can-i-force-external-links-from-browser-window-to-open-in-default-browser –

1

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.

15

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); 
}); 
+0

powinieneś wyjaśnić skąd pochodzi $. Odpowiedź jest nieco niekompletna bez tego. – mateuscb

+1

@mateuscb dobry punkt. Dodano wyjaśnienie. – niieani

0

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 = "#"; 
}