Есть ли какой-либо (простой/встроенный способ), чтобы открыть новый браузер (я имею в виду браузер ОС по умолчанию) для ссылки с Electron вместо того, чтобы посещать эту ссылку внутри вашего приложения Electron?
Сделать ссылку от Electron в браузере
Ответ 1
Вы можете просто использовать:
require("shell").openExternal("http://www.google.com")
Ответ 2
Там намного лучший и простой способ, чем предлагал @Marcelo, но еще проще реализовать для всех ссылок сразу, на что предлагал @zianwar.
const shell = require('electron').shell;
// assuming $ is jQuery
$(document).on('click', 'a[href^="http"]', function(event) {
event.preventDefault();
shell.openExternal(this.href);
});
Ответ 3
Чтобы заставить все электронные ссылки открываться снаружи в браузере ОС по умолчанию, вам придется добавить к ним свойство onclick
и изменить свойство href
, чтобы он не загружал ничего в приложении Electron.
Вы можете использовать что-то вроде этого:
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 = "#";
}
Но убедитесь, что весь документ загружен, прежде чем делать, иначе он не будет работать. Более надежная реализация будет выглядеть так:
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;
}
Помните, что если вы загружаете внешние файлы, вам нужно будет пройти через этот процесс, а после они будут полностью загружены.
Ответ 4
Чтобы запустить проект Electron в вашем фактическом браузере (Chrome, Mozilla и т.д.), добавьте его в ваш script внешний script:
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 = "#";
}