<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Open external links</title> </head> <body> <div class="demo"> <div class="demo-wrapper"> <div class="demo-box"> <div class="demo-controls"> <button class="demo-button" id="open-ex-links">View Demo</button> </div> <p> If you do not want your app to open website links <em>within</em> the app, you can use the <code>shell</code> module to open them externally. When clicked, the links will open outside of your app and in the user's default web browser. </p> <p> When the demo button is clicked, the electron website will open in your browser. </p> <p></p> <h5>Renderer Process</h5> <pre><code> const { shell } = require('electron') const exLinksBtn = document.getElementById('open-ex-links') exLinksBtn.addEventListener('click', (event) => { shell.openExternal('https://electronjs.org') }) </code></pre> <div class="demo-protip"> <h2>ProTip</h2> <strong>Open all outbound links externally.</strong> <p> You may want to open all <code>http</code> and <code>https</code> links outside of your app. To do this, query the document and loop through each link and add a listener. This app uses the code below which is located in <code>assets/ex-links.js</code>. </p> <h5>Renderer Process</h5> <pre><code> const { shell } = require('electron') const links = document.querySelectorAll('a[href]') Array.prototype.forEach.call(links, (link) => { const url = link.getAttribute('href') if (url.indexOf('http') === 0) { link.addEventListener('click', (e) => { e.preventDefault() shell.openExternal(url) }) }}) </code></pre> </div> </div> </div> </div> <script> // You can also require other files to run in this process require("./renderer.js"); </script> </body> </html>