#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) { |