67 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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>
 | 
