How to parse request parameters with JavaScript

JavaScript posted about 1 month ago by christian

Code:

   1  var Request = {	
   2  	parameter: function(name) {
   3  		return this.parameters()[name];
   4  	},
   5  	
   6  	parameters: function() {
   7  		var result = {};
   8  		var url = window.location.href;
   9  		var parameters = url.slice(url.indexOf('?') + 1).split('&');
  10  		
  11  		for(var i = 0;  i < parameters.length; i++) {
  12  			var parameter = parameters[i].split('=');
  13  			result[parameter[0]] = parameter[1];
  14  		}
  15  		return result;
  16  	}
  17  }

Examples:

   1  // ?query=test
   2  var query = Request.parameter('query');
   3  
   4  var parameters = Request.parameters();
   5  // This works too
   6  var query = parameters.query;
   7  // And this
   8  var query = parameters['query'];

Tagged javascript, jquery, request, parameters, url, parse

How to warn a user when he's leaving and there's unsaved data

JavaScript posted 3 months ago by christian

   1  function confirmExit(enabled) {
   2    window.onbeforeunload = (enabled) ? onUnloadMessage : null;
   3  }
   4  
   5  function onUnloadMessage() {
   6    return "You're about to leave without saving!";
   7  }
   8  
   9  // Enable
  10  $('.input').change(function() {
  11    confirmExit(true);
  12  });

Tagged javascript, onbeforeunload, unload

How to make sure new is called on a JavaScript object

JavaScript posted 4 months ago by christian

   1  function User(first, last){ 
   2    if ( !(this instanceof arguments.callee) ) 
   3      return new User(first, last); 
   4     
   5    this.name = first + " " + last; 
   6  }
   7  
   8  // Prevents issues with
   9  var user = User("John", name);
  10  //
  11  var user = new User("John", name);

From Learning advanced JavaScript

Tagged javascript, pattern

A Mozilla Jetpack extension template

JavaScript posted 4 months ago by christian

Jetpack extension:

   1  jetpack.future.import('menu');
   2  jetpack.future.import('selection');
   3   
   4  jetpack.menu.context.page.on('img').add(function(target) ({
   5    label:   "Post to flickr.com",
   6    icon:    "http://xxx/icon.png",
   7    command: function() {
   8      var url = "http://flickr.com/api?";
   9  
  10      var selectedText = jetpack.selection.text || '';
  11      var sourceImage   = target.node.src;
  12      var sourcePage = jetpack.tabs.focused.url;
  13  
  14      url += encodeURI('image') + '=' + encodeURI(sourceImage);
  15      url += '&' + encodeURI('description') + '=' + encodeURI(selectedText.substr(0, 200));
  16  
  17      jetpack.tabs.open(url).focus(); 
  18    }
  19  }));

Installation page:

   1  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
   2  <html lang="en">
   3  <head>
   4      <title>The Jetpack Feature</title>
   5      <link rel="jetpack" href="/javascripts/jetpack-extension.js" name="com extension" />
   6  </head>
   7  <body>
   8  </body>
   9  </html>

Tagged jetpack, extension, firefox, plugin

How to keep the scope when calling setTimeout/setInterval in JavaScript

JavaScript posted 4 months ago by christian

   1  // Don't loose our scope
   2  var self = this;
   3  // Closures to the rescue
   4  setTimeout(function() { self.hide() }, 500);

Tagged settimeout, setinterval, javascript, scope, closures