add link handling for buttons
The link handling occurs as a pop-up.
This commit is contained in:
		
							parent
							
								
									3e475d162a
								
							
						
					
					
						commit
						df855c883c
					
				
					 1 changed files with 76 additions and 11 deletions
				
			
		|  | @ -38,8 +38,8 @@ class windowman { | |||
|     this.window = chrome.windows.create({ | ||||
|       url: chrome.runtime.getURL(URL), | ||||
|       type: "popup", | ||||
|       width: width ? width : 400, | ||||
|       height: height ? height : 600, | ||||
|       width: width ? parseInt(width) : 400, | ||||
|       height: height ? parseInt(height) : 600, | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|  | @ -139,20 +139,16 @@ class windowman { | |||
|                 secretariat.write(UI_item[`source`], UI_item[`value`]); | ||||
|               }; | ||||
|               break; | ||||
|             case `range`: | ||||
|             /*// Ensure that it is a positive floating-point number. | ||||
| 							value = (!value) ? 0 : Math.abs(parseFloat(value)); | ||||
| 							if (value > 100) {value = value / 100}; | ||||
| 
 | ||||
| 							// Set the attribute of the progress bar.
 | ||||
| 							input_element.setAttribute(`value`, value); | ||||
| 							input_element.setAttribute(`max`, 1);*/ | ||||
|             default: | ||||
|               element[`event`] = function () { | ||||
|                 secretariat.write( | ||||
|                   data[`source`][`root`], | ||||
|                   data[`source`][`target`], | ||||
|                   this.value, | ||||
|                   element[`type`].includes(`num`) | ||||
|                     ? parseFloat(this.value) % 1 != 0 | ||||
|                       ? parseFloat(this.value) | ||||
|                       : parseInt(this.value) | ||||
|                     : this.value, | ||||
|                 ); | ||||
|               }; | ||||
|               break; | ||||
|  | @ -243,8 +239,77 @@ class windowman { | |||
|       changeUI(); | ||||
|     } | ||||
| 
 | ||||
|     /* Map buttons to their corresponding action buttons. */ | ||||
|     function actions() { | ||||
|       function links() { | ||||
|         let buttons = document.querySelectorAll("button[href]"); | ||||
| 
 | ||||
|         if (buttons) { | ||||
|           buttons.forEach((button) => { | ||||
|             let event = function () { | ||||
|               // Get the data from the button.
 | ||||
|               let file = {}; | ||||
|               file[`target`] = this.getAttribute(`href`); | ||||
| 
 | ||||
|               // Check if the file exists to only open it when it is the case.
 | ||||
|               function testUrl(URL) { | ||||
|                 // Code from https://stackoverflow.com/questions/3646914/how-do-i-check-if-file-exists-in-jquery-or-pure-javascript
 | ||||
|                 const HTTP = new XMLHttpRequest(); | ||||
|                 try { | ||||
|                   HTTP.open(`HEAD`, URL, false); | ||||
|                   HTTP.send(); | ||||
|                   return HTTP.status != 404; | ||||
|                 } catch (error) { | ||||
|                   return false; | ||||
|                 } | ||||
|               } | ||||
| 
 | ||||
|               if (!file[`target`].includes(`://`)) { | ||||
|                 // Get the current path.
 | ||||
|                 file[`path`] = window.location.pathname.split(`/`); | ||||
|                 file[`path`] = | ||||
|                   file[`path`].slice(0, file[`path`].length - 1).join(`/`) + | ||||
|                   `/`; | ||||
|                 file[`location`] = file[`path`].concat(file[`target`]); | ||||
|               } else { | ||||
|                 file[`location`] = file[`target`]; | ||||
|               } | ||||
| 
 | ||||
|               let open_combinations = [``, `.htm`, `.html`]; | ||||
|               for ( | ||||
|                 let open_combination = 0; | ||||
|                 open_combination < open_combinations.length; | ||||
|                 open_combination++ | ||||
|               ) { | ||||
|                 if ( | ||||
|                   testUrl( | ||||
|                     file[`location`] + open_combinations[open_combination], | ||||
|                   ) | ||||
|                 ) { | ||||
|                   new windowman( | ||||
|                     file[`location`] + open_combinations[open_combination], | ||||
|                     this.getAttribute(`tab-height`) | ||||
|                       ? this.getAttribute(`tab-height`) | ||||
|                       : null, | ||||
|                     this.getAttribute(`tab-width`) | ||||
|                       ? this.getAttribute(`tab-width`) | ||||
|                       : null, | ||||
|                   ); | ||||
|                   break; | ||||
|                 } | ||||
|               } | ||||
|             }; | ||||
|             button.addEventListener("click", event); | ||||
|           }); | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       links(); | ||||
|     } | ||||
| 
 | ||||
|     storage(); | ||||
|     functionality(); | ||||
|     actions(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue