Underscore example:
_.each([1, 2, 3], function(num) { alert(num); });
// I mean, seriously, localStorage is supported even by your mum. How about instead of | |
// casing the feature out, you give users in-memory (stale) storage instead? | |
// If they close your application, they deserve to lose data anyway. | |
// if (!('localStorage' in window)) { | |
if (!Modernizr.localstorage) { | |
window.localStorage = { | |
_data : {}, | |
setItem : function(id, val) { return this._data[id] = String(val); }, | |
getItem : function(id) { return this._data.hasOwnProperty(id) ? this._data[id] : undefined; }, |
/** | |
Code copyright Dustin Diaz and Ross Harmes, Pro JavaScript Design Patterns. | |
**/ | |
// Constructor. | |
var Interface = function (name, methods) { | |
if (arguments.length != 2) { | |
throw new Error("Interface constructor called with " + arguments.length + "arguments, but expected exactly 2."); | |
} | |
this.name = name; |
/* Extend the Underscore object with the following methods */ | |
// Rate limit ensures a function is never called more than every [rate]ms | |
// Unlike underscore's _.throttle function, function calls are queued so that | |
// requests are never lost and simply deferred until some other time | |
// | |
// Parameters | |
// * func - function to rate limit | |
// * rate - minimum time to wait between function calls | |
// * async - if async is true, we won't wait (rate) for the function to complete before queueing the next request |
AZHU.storage = { | |
save : function(key, jsonData, expirationMin){ | |
if (!Modernizr.localstorage){return false;} | |
var expirationMS = expirationMin * 60 * 1000; | |
var record = {value: JSON.stringify(jsonData), timestamp: new Date().getTime() + expirationMS} | |
localStorage.setItem(key, JSON.stringify(record)); | |
return jsonData; | |
}, | |
load : function(key){ | |
if (!Modernizr.localstorage){return false;} |
<!doctype html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>App Redirection</title> | |
</head> | |
<body> | |
<!-- | |
NOTE: This was a great hack in days gone by, but now both Apple and Google have improved their support for custom | |
protocol handlers. |
Handlebars.registerHelper('loc', function(property, fn) { | |
var str; | |
// we are bound to a value, it is now the context | |
if (fn.contexts && typeof fn.contexts[0] === 'string') { | |
str = fn.contexts[0]; | |
// Convention, start all localization keys with _ | |
} else if (property[0] === '_') { | |
str = property; |
var myPrototype = { | |
methodA: function methodA() {}, | |
methodB: function methodB() {}, | |
methodC: function methodC() {} | |
}; | |
createFoo = function createFoo() { | |
return (Object.create(myPrototype)); | |
}; |
import android.content.Context; | |
import android.graphics.drawable.Drawable; | |
import android.os.Parcel; | |
import android.os.Parcelable; | |
import android.util.AttributeSet; | |
import android.view.MotionEvent; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.Checkable; | |
import android.widget.LinearLayout; |
// not sure how to detect this yet, stay tuned or leave a comment | |
window.document._createElement = window.document.createElement; | |
window.document.createElement = function(name, attributes) { | |
if (typeOf attributes === 'string') { | |
// Chrome adds an undefined 'is' attribute for the second arg, why is this? | |
// Chrome is also throwing a TypeError for any third arg I can think of (number, string, object) | |
return window.document._createElement(arguments); | |
} else { | |
var elm = window.document._createElement(name); |