Skip to content

Instantly share code, notes, and snippets.

Mathias Bynens mathiasbynens

Block or report user

Report or block mathiasbynens

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
mathiasbynens / Playing sounds on mouseover using jQuery
Created Nov 27, 2009
Playing sounds on mouseover using jQuery. Using <embed>, because who needs <audio> anyway‽
View Playing sounds on mouseover using jQuery
var $sound = $('<div id="sound" />').appendTo('body');
$('#special-links-that-play-annoying-sounds-when-hovered a').hover(function() {
$sound.html('<embed src="foo.mp3" hidden="true" autostart="true" loop="false">');
}, function() {
// We could empty the innerHTML of $sound here, but that would only slow things down.
mathiasbynens /
Created Jan 26, 2010
Simple spam protection for email addresses using jQuery
/* Simple spam protection for email addresses using jQuery.
* Well, the protection isn’t jQuery-based, but you get the idea.
* This snippet allows you to slightly ‘obfuscate’ email addresses to make it harder for spambots to harvest them, while still offering a readable address to your visitors.
* E.g.
* <a href="mailto:foo(at)example(dot)com">foo at example dot com</a>
* →
* <a href=""></a>
$(function() {
View toggleAttr() jQuery plugin
* toggleAttr() jQuery plugin
* @link
* @description Used to toggle selected="selected", disabled="disabled", checked="checked" etc…
* @author Mathias Bynens <>
jQuery.fn.toggleAttr = function(attr) {
return this.each(function() {
var $this = $(this);
$this.attr(attr) ? $this.removeAttr(attr) : $this.attr(attr, attr);
View jquery.insertAtCaret.js
// I found this somewhere on the intertubes, and optimized it
$.fn.insertAtCaret = function(myValue) {
return this.each(function() {
var me = this;
if (document.selection) { // IE
sel = document.selection.createRange();
sel.text = myValue;
} else if (me.selectionStart || me.selectionStart == '0') { // Real browsers
View JavaScript function to calculate the destination point given start point latitude and longitude (numeric degrees), bearing (numeric degrees) and distance (in m), based on the Vincenty direct formula.
* JavaScript function to calculate the destination point given start point latitude / longitude (numeric degrees), bearing (numeric degrees) and distance (in m).
* Original scripts by Chris Veness
* Taken from and optimized / cleaned up by Mathias Bynens <>
* Based on the Vincenty direct formula by T. Vincenty, “Direct and Inverse Solutions of Geodesics on the Ellipsoid with application of nested equations”, Survey Review, vol XXII no 176, 1975 <>
function toRad(n) {
return n * Math.PI / 180;
mathiasbynens / jquery.crash-ie.js
Created Apr 8, 2010
jQuery Crash plugin — updated to work with IE6, IE7 and IE8
View jquery.crash-ie.js
* jQuery Crash for IE6, IE7 and IE8
* @description This is an expansion of the jQuery Crash plugin for IE6 by Chad Smith.
* @author Mathias Bynens <>
* Use $.crashIE6(); and/or $.crashIE7(); and/or $.crashIE8();
$.crashIE6 = function(x) {
if ($.browser.msie && $.browser.version < 7) {
for (x in;
View Optimized Clicky Asynchronous Tracking Code
* See
var f = Function(),
clicky = { log: f, goal: f },
clicky_site_id = XXXXXX;
(function(d, t) {
var c = d.createElement(t),
mathiasbynens / jquery.preload.js
Created Apr 22, 2010
JavaScript preload() function
View jquery.preload.js
* $.preload() function for jQuery –
* Preload images, CSS and JavaScript files without executing them
* Script by Stoyan Stefanov –
* Slightly rewritten by Mathias Bynens –
* Note that since this script relies on jQuery, the preloading process will not start until jQuery has finished loading.
jQuery.preload = function(array) {
var length = array.length,
mathiasbynens / jquery.cookie.js
Created May 13, 2010
Improved jQuery.cookie plugin
View jquery.cookie.js
mathiasbynens / Minified version
Created Jun 5, 2010 — forked from paulirish/gist:426012
Optimized version of amelie.js for IE6
View Minified version
if(document.all&&!window.XMLHttpRequest){(function(){var b=1,a=0,e,c;function d(){if(b==2){b=0}if(!b++){e=c=0;a=~~(Math.random()*10000)+2000;setTimeout(d,a)}else{e=~~(Math.random()*2)+2;c=~~(Math.random()*360);setTimeout(d,500)}"progid:DXImageTransform.Microsoft.MotionBlur(strength="+e+",direction="+c+",enabled='true')"}setTimeout(d,1000)})()}
You can’t perform that action at this time.