Skip to content

Instantly share code, notes, and snippets.

View menor's full-sized avatar

José Menor menor

View GitHub Profile
@menor
menor / javascript_windowPosition
Last active December 22, 2015 23:39
Determines the top and left position from the window across browsers Source: Professional Javascript for Web Developers by Nicholas Zakas (page 244)
var leftPos = (typeof window.screenLeft == "number") ?
window.screenLeft : window.screenX;
var topPos = (typeof window.screenTop == "number") ?
window.screenTop : window.screenY;
@menor
menor / javascript_hasPlugin
Last active December 23, 2015 05:59
Determines whether a browser has a particular plug-in installed. Doesn't work in IE Source: Professional Javascript for Web Developers by Nicholas Zakas (page 262)
// plugin detection - doesn't work in IE
function hasPlugin(name) {
name = name.toLowerCase();
for (var i=0 ; i < navigator.plugins.length ; i +=1) {
if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {
return true;
}
}
@menor
menor / javascript_nodeListToArray
Created September 18, 2013 05:29
Converts a node list to an array and works in IE 8 and earlier From Professional Javascript for Web Developers by Nicholas Zakas. Page 312.
function nodeListToArray(nodes) {
var array = null;
try {
array = Array.prototype.slice.call(nodes, 0); //non-IE and IE9+
} catch (ex) {
array = new Array();
for(var i=0, len=nodes.length; i < len; i+=1) {
array.push(nodes[i]);
}
}
@menor
menor / javascrip_prevent_multiple_submits
Created September 20, 2013 07:18
Disables a form submit button once it's clicked From Professional Javascript for Web Developers by Nicholas Zakas, page 516
//Code to prevent multiple form submissions
EventUtil.addHandler(form, "submit", function(event) {
event = EventUtil.getEvent(event);
var target = EventUtil.getTarget(event);
//get the submit button
var btn = target.elements["submit-btn"];
//disable it
btn.disabled = true;
@menor
menor / javascript_eventObject
Last active February 1, 2017 08:14
Cross-Browser Event Object. From Professional Javascript for Web Developers by Nicholas Zakas (page 449)
var EventUtil = {
addHandler: function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if (element.attachEvent){
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
@menor
menor / subl_javascript.sublime-build
Created September 26, 2013 08:29
Configures the javascript build system using node in Sublime Text 2. The path points to node if installed through Homebrew, change it if you have it installed in another directory. Save this file as javascript-sublime.build on directory Sublime Text 2/Packages/User/
{
"path":"/usr/local/bin/",
"cmd": ["node", "$file", "$file_base_name"],
"working_dir": "${project_path:${folder}}",
"selector": "*.js"
}
@menor
menor / grunt_livereload_gruntfile.js
Created September 28, 2013 17:32
A very simple Gruntfile for a static site, that just watches for changes in the html, css or javascript. Needs the LiveReload browser extension for the browser to live reload the pages.
'use strict';
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
connect: {
livereload: {
options: {
# RSpec 2.0 syntax Cheet Sheet by http://ApproachE.com
# defining spec within a module will automatically pick Player::MovieList as a 'subject' (see below)
module Player
describe MovieList, "with optional description" do
it "is pending example, so that you can write ones quickly"
it "is already working example that we want to suspend from failing temporarily" do
pending("working on another feature that temporarily breaks this one")
@menor
menor / 0.2.1-boggle_class_from_methods.rb
Created November 29, 2013 10:56 — forked from dbc-challenges/0.2.1-boggle_class_from_methods.rb
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
attr_reader :board
def initialize(board)
@board = board
end
def print_board
@board.each { |row| p row}
end
@menor
menor / How-ems-work.markdown
Created December 24, 2013 07:11
A Pen by José Menor.