Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- ** Author: Tomas E. Sandven
- **
- ** This object gives easy control over query arguments
- ** in the URL hash string
- **/
- window.hashArgs = (function() {
- var self = {};
- var hash = window.location.hash.substr(1);
- var args = parseArgs(hash);
- var _changes = {};
- // Add an event to hash changed
- window.addEventListener("hashchange", function() {
- hash = window.location.hash.substr(1);
- newArgs = parseArgs(hash);
- $.each(_changes, function(e) {
- if(newArgs[e] && args[e] !== newArgs[e])
- {
- self.runChange(e, newArgs[e]);
- }
- });
- args = newArgs;
- }, false);
- // Get an argument by key
- self.get = function(key)
- {
- if(isset(key))
- return args[key];
- else return false;
- };
- // Set an argument by key
- self.set = function(key, value)
- {
- args[key] = value;
- updateHash();
- };
- // Make isset public
- self.isset = isset;
- // Add a key changed listener by name
- self.addChangeListener = function(name, callback)
- {
- if(_changes[name])
- _changes[name].push(callback);
- else
- _changes[name] = [callback];
- };
- // Run a key changed listener by name
- self.runChange = function(name, overload)
- {
- if(_changes[name])
- {
- $.each(_changes[name], function() {
- this.call(overload);
- });
- }
- }
- // Check if a key is set in args
- function isset(index)
- {
- if(typeof args[index] === "undefined")
- return false;
- else return true;
- }
- // Update the URL hash
- function updateHash()
- {
- window.location.hash = "#" + deParseHash(args);
- }
- // Parse query string to object
- function parseArgs(input)
- {
- var retval = {};
- var pairs = input.split("&");
- $.each(pairs, function(i) {
- var split = this.split("=");
- if(typeof split[1] !== "undefined")
- retval[split[0]] = split[1];
- else
- retval[split[0]] = null;
- });
- return retval;
- }
- // Object back to query string
- function deParseHash(input)
- {
- var retval = "";
- $.each(input, function(i) {
- if(i)
- {
- if(typeof this !== "null")
- retval += "&" + i + "=" + this;
- else retval += "&" + i;
- }
- });
- return retval.substr(1);
- }
- return self;
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement