从Electron打开浏览器中的链接

有什么(简单/内置的方式)来打开一个新的浏览器(我的意思是默认的操作系统浏览器)窗口从Electron的链接,而不是访问您的电子应用程序内的链接?

你可以简单地使用:

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

有一种比@Marcelo提出的更好更简单的方法,但是更容易实现@zianwar提出的所有链接。

 const shell = require('electron').shell; // assuming $ is jQuery $(document).on('click', 'a[href^="http"]', function(event) { event.preventDefault(); shell.openExternal(this.href); }); 

要使所有的Electron链接在默认的操作系统浏览器中外部打开,您必须为它们添加一个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; } 

请记住,如果你加载外部文件,你将不得不让他们经历这个过程以及完全加载后。

要在您的实际浏览器(Chrome,Mozilla等)中运行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 = "#"; }