| } | } | ||||
| } | } | ||||
| if (!killSticky) return; | if (!killSticky) return; | ||||
| console.log("Killing all stickies!"); | |||||
| document.querySelectorAll('body *').forEach(element => { | |||||
| if (getComputedStyle(element).position === 'fixed' || | |||||
| getComputedStyle(element).position === 'sticky') { | |||||
| element.remove(); | |||||
| } | |||||
| }); | |||||
| } | |||||
| killSticky(); | |||||
| } |
| /*******************************/ | |||||
| /* EVENT LISTENER MANIPULATION */ | |||||
| /*******************************/ | |||||
| /* Adds an event listener to a button (or other clickable element), attaching | |||||
| it to both "click" and "keyup" events (for use with keyboard navigation). | |||||
| Optionally also attaches the listener to the 'mousedown' event, making the | |||||
| element activate on mouse down instead of mouse up. */ | |||||
| Element.prototype.addActivateEvent = function(func, includeMouseDown) { | |||||
| let ael = this.activateEventListener = (event) => { if (event.button === 0 || event.key === ' ') func(event) }; | |||||
| if (includeMouseDown) this.addEventListener("mousedown", ael); | |||||
| this.addEventListener("click", ael); | |||||
| this.addEventListener("keyup", ael); | |||||
| } | |||||
| /* Removes event listener from a clickable element, automatically detaching it | |||||
| from all relevant event types. */ | |||||
| Element.prototype.removeActivateEvent = function() { | |||||
| let ael = this.activateEventListener; | |||||
| this.removeEventListener("mousedown", ael); | |||||
| this.removeEventListener("click", ael); | |||||
| this.removeEventListener("keyup", ael); | |||||
| } | |||||
| /***********/ | |||||
| /* HELPERS */ | |||||
| /***********/ | |||||
| function killSticky() { | |||||
| console.log("Killing all stickies!"); | |||||
| document.querySelectorAll('body *').forEach(element => { | |||||
| if (getComputedStyle(element).position === 'fixed' || | |||||
| getComputedStyle(element).position === 'sticky') { | |||||
| element.remove(); | |||||
| } | |||||
| }); | |||||
| } | |||||
| String.prototype.hasPrefix = function (prefix) { | |||||
| return (this.lastIndexOf(prefix, 0) === 0); | |||||
| } |
| </div> | </div> | ||||
| <p>NOTE: Exclusion patterns override matching patterns; if a page is <em>both</em> matched <em>and</em> excluded, stickies will <strong>not</strong> be killed on that page.</p> | <p>NOTE: Exclusion patterns override matching patterns; if a page is <em>both</em> matched <em>and</em> excluded, stickies will <strong>not</strong> be killed on that page.</p> | ||||
| </body> | </body> | ||||
| <script src="functions.js"></script> | |||||
| <script src="options.js"></script> | <script src="options.js"></script> | ||||
| </html> | </html> |
| /*******************************/ | |||||
| /* EVENT LISTENER MANIPULATION */ | |||||
| /*******************************/ | |||||
| /* Adds an event listener to a button (or other clickable element), attaching | |||||
| it to both "click" and "keyup" events (for use with keyboard navigation). | |||||
| Optionally also attaches the listener to the 'mousedown' event, making the | |||||
| element activate on mouse down instead of mouse up. */ | |||||
| Element.prototype.addActivateEvent = function(func, includeMouseDown) { | |||||
| let ael = this.activateEventListener = (event) => { if (event.button === 0 || event.key === ' ') func(event) }; | |||||
| if (includeMouseDown) this.addEventListener("mousedown", ael); | |||||
| this.addEventListener("click", ael); | |||||
| this.addEventListener("keyup", ael); | |||||
| } | |||||
| /* Removes event listener from a clickable element, automatically detaching it | |||||
| from all relevant event types. */ | |||||
| Element.prototype.removeActivateEvent = function() { | |||||
| let ael = this.activateEventListener; | |||||
| this.removeEventListener("mousedown", ael); | |||||
| this.removeEventListener("click", ael); | |||||
| this.removeEventListener("keyup", ael); | |||||
| } | |||||
| /*******************/ | /*******************/ | ||||
| /* EVENT LISTENERS */ | /* EVENT LISTENERS */ | ||||
| /*******************/ | /*******************/ |