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({ |     this.window = chrome.windows.create({ | ||||||
|       url: chrome.runtime.getURL(URL), |       url: chrome.runtime.getURL(URL), | ||||||
|       type: "popup", |       type: "popup", | ||||||
|       width: width ? width : 400, |       width: width ? parseInt(width) : 400, | ||||||
|       height: height ? height : 600, |       height: height ? parseInt(height) : 600, | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -139,20 +139,16 @@ class windowman { | ||||||
|                 secretariat.write(UI_item[`source`], UI_item[`value`]); |                 secretariat.write(UI_item[`source`], UI_item[`value`]); | ||||||
|               }; |               }; | ||||||
|               break; |               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: |             default: | ||||||
|               element[`event`] = function () { |               element[`event`] = function () { | ||||||
|                 secretariat.write( |                 secretariat.write( | ||||||
|                   data[`source`][`root`], |                   data[`source`][`root`], | ||||||
|                   data[`source`][`target`], |                   data[`source`][`target`], | ||||||
|                   this.value, |                   element[`type`].includes(`num`) | ||||||
|  |                     ? parseFloat(this.value) % 1 != 0 | ||||||
|  |                       ? parseFloat(this.value) | ||||||
|  |                       : parseInt(this.value) | ||||||
|  |                     : this.value, | ||||||
|                 ); |                 ); | ||||||
|               }; |               }; | ||||||
|               break; |               break; | ||||||
|  | @ -243,8 +239,77 @@ class windowman { | ||||||
|       changeUI(); |       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(); |     storage(); | ||||||
|     functionality(); |     functionality(); | ||||||
|  |     actions(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue