#Stay Standalone
A short script to prevent internal links to a "webapp" added to iPhone home screen to open in Safari instead of navigating internally.
| echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
| . ~/.bashrc | |
| mkdir ~/local | |
| mkdir ~/node-latest-install | |
| cd ~/node-latest-install | |
| curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
| ./configure --prefix=~/local | |
| make install # ok, fine, this step probably takes more than 30 seconds... | |
| curl https://www.npmjs.org/install.sh | sh | 
| module Jekyll | |
| class TagCloudTag < Liquid::Tag | |
| safe = true | |
| def initialize(tag_name, text, tokens) | |
| super | |
| end | |
| def render(context) | |
| html = "" | 
| // | |
| // Regular Expression for URL validation | |
| // | |
| // Author: Diego Perini | |
| // Created: 2010/12/05 | |
| // Updated: 2018/09/12 | |
| // License: MIT | |
| // | |
| // Copyright (c) 2010-2018 Diego Perini (http://www.iport.it) | |
| // | 
#Stay Standalone
A short script to prevent internal links to a "webapp" added to iPhone home screen to open in Safari instead of navigating internally.
NOTE I now use the conventions detailed in the SUIT framework
Used to provide structural templates.
Pattern
t-template-name
| document.body.addEventListener('error', function(event) { | |
| if ( event.target.nodeName.toLowerCase() == 'img' ) { | |
| // an image on the page failed to load | |
| } | |
| }, true); | 
| // addEventListener polyfill IE6+ | |
| !window.addEventListener && (function (window, document) { | |
| function Event(e, element) { | |
| var instance = this; | |
| for (property in e) { | |
| instance[property] = e[property]; | |
| } | |
| instance.currentTarget = element; | 
| // Straightforward + simple. | |
| $("button").on("click", function(event) { | |
| event.preventDefault(); | |
| var button = $(this); | |
| var numberElem = button.find(".number"); | |
| var number = Number(numberElem.text()) - 1; | |
| numberElem.text(number); | |
| if (number === 0) { | |
| button.prop("disabled", true); | |
| button.off("click"); | 
| (function(){ | |
| var key = localStorage.wpt_key; | |
| if (!key) { | |
| var prompt = window.__proto__.prompt; | |
| key = prompt('Your WebPagetest API key, please?'); | |
| if (!key) { | |
| return gameOver(); | |
| } | |
| localStorage.wpt_key = key; | 
| (function(doc) { | |
| // Add touch device support for dropdown menu | |
| if (('addEventListener' in doc) && ('querySelectorAll' in doc) && (('ontouchstart' in window) || ('onmsgesturechange' in window))) { | |
| var menu_item_selector = '.the-menu > div > ul > li', | |
| menu_items = doc.querySelectorAll(menu_item_selector), | |
| touchStart; | |
| // Set up touch start handler | |
| touchStart = function() { | |
| if (this.className.indexOf(' tapped') > -1) { |