Version: 1.3pre, Last updated: 8/26/2010
jQuery BBQ: Back Button & Query Library | Version: 1.3pre, Last updated: 8/26/2010 |
License | Copyright © 2010 “Cowboy” Ben Alman, Dual licensed under the MIT and GPL licenses. |
Examples | These working examples, complete with fully commented code, illustrate a few ways in which this plugin can be used. |
Support and Testing | Information about what version or versions of jQuery this plugin has been tested with, what browsers it has been tested in, and where the unit tests reside (so you can test it yourself). |
Release History | |
Param (to string) | |
Functions | |
jQuery. | Retrieve the query string from a URL or if no arguments are passed, the current window.location.href. |
jQuery. | Merge a URL, with or without pre-existing query string params, plus any object, params string or URL containing query string params into a new URL. |
jQuery. | Retrieve the fragment (hash) from a URL or if no arguments are passed, the current window.location.href. |
jQuery. | Merge a URL, with or without pre-existing fragment (hash) params, plus any object, params string or URL containing fragment (hash) params into a new URL. |
jQuery. | Returns a params string equivalent to that returned by the internal jQuery.param method, but sorted, which makes it suitable for use as a cache key. |
jQuery. | Specify characters that will be left unescaped when fragments are created or merged using jQuery.param.fragment, or when the fragment is modified using jQuery.bbq.pushState. |
jQuery. | TODO: DESCRIBE |
Deparam (from string) | |
Functions | |
jQuery. | Deserialize a params string into an object, optionally coercing numbers, booleans, null and undefined values; this method is the counterpart to the internal jQuery.param method. |
jQuery. | Parse the query string from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values. |
jQuery. | Parse the fragment (hash) from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values. |
Element manipulation | |
Functions | |
jQuery. | Get the internal “Default URL attribute per tag” list, or augment the list with additional tag-attribute pairs, in case the defaults are insufficient. |
jQuery. | Update URL attribute in one or more elements, merging the current URL (with or without pre-existing query string params) plus any params object or string into a new URL, which is then set into that attribute. |
jQuery. | Update URL attribute in one or more elements, merging the current URL (with or without pre-existing fragment/hash params) plus any params object or string into a new URL, which is then set into that attribute. |
History, hashchange event | |
Functions | |
jQuery. | Adds a ‘state’ into the browser history at the current position, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state). |
jQuery. | Retrieves the current ‘state’ from the browser history, parsing location.hash for a specific key or returning an object containing the entire state, optionally coercing numbers, booleans, null and undefined values. |
jQuery. | Remove one or more keys from the current browser history ‘state’, creating a new state, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state). |
Events | |
hashchange event (BBQ) | In jQuery 1.4 and newer, the event object passed into any hashchange event callback is augmented with a copy of the location.hash fragment at the time the event was triggered as its event.fragment property. |
Files | |
jQuery hashchange event | Version: 1.3, Last updated: 7/21/2010 |
License | Copyright © 2010 “Cowboy” Ben Alman, Dual licensed under the MIT and GPL licenses. |
Examples | These working examples, complete with fully commented code, illustrate a few ways in which this plugin can be used. |
Support and Testing | Information about what version or versions of jQuery this plugin has been tested with, what browsers it has been tested in, and where the unit tests reside (so you can test it yourself). |
Known issues | While this jQuery hashchange event implementation is quite stable and robust, there are a few unfortunate browser bugs surrounding expected hashchange event-based behaviors, independent of any JavaScript window.onhashchange abstraction. |
Release History | |
Functions | |
jQuery. | Bind a handler to the window.onhashchange event or trigger all bound window.onhashchange event handlers. |
Properties | |
jQuery. | The numeric interval (in milliseconds) at which the hashchange event polling loop executes. |
jQuery. | If you’re setting document.domain in your JavaScript, and you want hash history to work in IE6/7, not only must this property be set, but you must also set document.domain BEFORE jQuery is loaded into the page. |
jQuery. | If, for some reason, you need to specify an Iframe src file (for example, when setting document.domain as in jQuery.fn.hashchange.domain), you can do so using this property. |
Events | |
hashchange event | Fired when location.hash changes. |
Copyright © 2010 “Cowboy” Ben Alman, Dual licensed under the MIT and GPL licenses. http://benalman.com/about/license/
These working examples, complete with fully commented code, illustrate a few ways in which this plugin can be used.
Information about what version or versions of jQuery this plugin has been tested with, what browsers it has been tested in, and where the unit tests reside (so you can test it yourself).
jQuery Versions | 1.2.6, 1.3.2, 1.4.1, 1.4.2 |
Browsers Tested | Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. |
Unit Tests | http://benalman.com |
1.3pre | (8/26/2010) Integrated jQuery hashchange event v1.3, which adds document.title and document.domain support in IE6/7, BlackBerry support, better Iframe hiding for accessibility reasons, and the new jQuery.fn.hashchange “shortcut” method. Added the jQuery.param.sorted method which reduces the possibility of extraneous hashchange event triggering. Added the jQuery.param.fragment.ajaxCrawlable method which can be used to enable Google “AJAX Crawlable mode.” |
1.2.1 | (2/17/2010) Actually fixed the stale window.location Safari bug from jQuery hashchange event in BBQ, which was the main reason for the previous release! |
1.2 | (2/16/2010) Integrated jQuery hashchange event v1.2, which fixes a Safari bug, the event can now be bound before DOM ready, and IE6/7 page should no longer scroll when the event is first bound. Also added the jQuery.param.fragment.noEscape method, and reworked the hashchange event (BBQ) internal “add” method to be compatible with changes made to the jQuery 1.4.2 special events API. |
1.1.1 | (1/22/2010) Integrated jQuery hashchange event v1.1, which fixes an obscure IE8 EmulateIE7 meta tag compatibility mode bug. |
1.1 | (1/9/2010) Broke out the jQuery BBQ event.special hashchange event functionality into a separate plugin for users who want just the basic event & back button support, without all the extra awesomeness that BBQ provides. This plugin will be included as part of jQuery BBQ, but also be available separately. See jQuery hashchange event plugin for more information. Also added the jQuery.bbq.removeState method and added additional jQuery.deparam examples. |
1.0.3 | (12/2/2009) Fixed an issue in IE 6 where location.search and location.hash would report incorrectly if the hash contained the ? character. Also jQuery.param.querystring and jQuery.param.fragment will no longer parse params out of a URL that doesn’t contain ? or #, respectively. |
1.0.2 | (10/10/2009) Fixed an issue in IE 6/7 where the hidden IFRAME caused a “This page contains both secure and nonsecure items.” warning when used on an https:// page. |
1.0.1 | (10/7/2009) Fixed an issue in IE 8. Since both “IE7” and “IE8 Compatibility View” modes erroneously report that the browser supports the native window.onhashchange event, a slightly more robust test needed to be added. |
1.0 | (10/2/2009) Initial release |
Functions | |
jQuery. | Retrieve the query string from a URL or if no arguments are passed, the current window.location.href. |
jQuery. | Merge a URL, with or without pre-existing query string params, plus any object, params string or URL containing query string params into a new URL. |
jQuery. | Retrieve the fragment (hash) from a URL or if no arguments are passed, the current window.location.href. |
jQuery. | Merge a URL, with or without pre-existing fragment (hash) params, plus any object, params string or URL containing fragment (hash) params into a new URL. |
jQuery. | Returns a params string equivalent to that returned by the internal jQuery.param method, but sorted, which makes it suitable for use as a cache key. |
jQuery. | Specify characters that will be left unescaped when fragments are created or merged using jQuery.param.fragment, or when the fragment is modified using jQuery.bbq.pushState. |
jQuery. | TODO: DESCRIBE |
Retrieve the query string from a URL or if no arguments are passed, the current window.location.href.
jQuery.param.querystring( [ url ] );
url | (String) A URL containing query string params to be parsed. If url is not passed, the current window.location.href is used. |
(String) The parsed query string, with any leading “?” removed.
Merge a URL, with or without pre-existing query string params, plus any object, params string or URL containing query string params into a new URL.
jQuery.param.querystring( url, params [, merge_mode ] );
url | (String) A valid URL for params to be merged into. This URL may contain a query string and/or fragment (hash). |
params | (String) A params string or URL containing query string params to be merged into url. |
params | (Object) A params object to be merged into url. |
merge_mode | (Number) Merge behavior defaults to 0 if merge_mode is not specified, and is as-follows: |
(String) A URL with a urlencoded query string in the format ‘?a=b&c=d&e=f’.
Retrieve the fragment (hash) from a URL or if no arguments are passed, the current window.location.href.
jQuery.param.fragment( [ url ] );
url | (String) A URL containing fragment (hash) params to be parsed. If url is not passed, the current window.location.href is used. |
(String) The parsed fragment (hash) string, with any leading “#” removed.
Merge a URL, with or without pre-existing fragment (hash) params, plus any object, params string or URL containing fragment (hash) params into a new URL.
jQuery.param.fragment( url, params [, merge_mode ] );
url | (String) A valid URL for params to be merged into. This URL may contain a query string and/or fragment (hash). |
params | (String) A params string or URL containing fragment (hash) params to be merged into url. |
params | (Object) A params object to be merged into url. |
merge_mode | (Number) Merge behavior defaults to 0 if merge_mode is not specified, and is as-follows: |
(String) A URL with a urlencoded fragment (hash) in the format ‘#a=b&c=d&e=f’.
Returns a params string equivalent to that returned by the internal jQuery.param method, but sorted, which makes it suitable for use as a cache key.
For example, in most browsers jQuery.param({z:1,a:2}) returns “z=1&a=2” and jQuery.param({a:2,z:1}) returns “a=2&z=1”. Even though both the objects being serialized and the resulting params strings are equivalent, if these params strings were set into the location.hash fragment sequentially, the hashchange event would be triggered unnecessarily, since the strings are different (even though the data described by them is the same). By sorting the params string, unecessary hashchange event triggering can be avoided.
jQuery.param.sorted( obj [, traditional ] );
obj | (Object) An object to be serialized. |
traditional | (Boolean) Params deep/shallow serialization mode. See the documentation at http://api.jquery.com/jQuery.param/ for more detail. |
(String) A sorted params string.
Specify characters that will be left unescaped when fragments are created or merged using jQuery.param.fragment, or when the fragment is modified using jQuery.bbq.pushState. This option only applies to serialized data object fragments, and not set-as-string fragments. Does not affect the query string. Defaults to “,/” (comma, forward slash).
Note that this is considered a purely aesthetic option, and will help to create URLs that “look pretty” in the address bar or bookmarks, without affecting functionality in any way. That being said, be careful to not unescape characters that are used as delimiters or serve a special purpose, such as the “#?&=+” (octothorpe, question mark, ampersand, equals, plus) characters.
jQuery.param.fragment.noEscape( [ chars ] );
chars | (String) The characters to not escape in the fragment. If unspecified, defaults to empty string (escape all characters). |
Nothing.
Functions | |
jQuery. | Deserialize a params string into an object, optionally coercing numbers, booleans, null and undefined values; this method is the counterpart to the internal jQuery.param method. |
jQuery. | Parse the query string from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values. |
jQuery. | Parse the fragment (hash) from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values. |
Deserialize a params string into an object, optionally coercing numbers, booleans, null and undefined values; this method is the counterpart to the internal jQuery.param method.
jQuery.deparam( params [, coerce ] );
params | (String) A params string to be parsed. |
coerce | (Boolean) If true, coerces any numbers or true, false, null, and undefined to their actual value. Defaults to false if omitted. |
(Object) An object representing the deserialized params string.
Parse the query string from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values.
jQuery.deparam.querystring( [ url ] [, coerce ] );
url | (String) An optional params string or URL containing query string params to be parsed. If url is omitted, the current window.location.href is used. |
coerce | (Boolean) If true, coerces any numbers or true, false, null, and undefined to their actual value. Defaults to false if omitted. |
(Object) An object representing the deserialized params string.
Parse the fragment (hash) from a URL or the current window.location.href, deserializing it into an object, optionally coercing numbers, booleans, null and undefined values.
jQuery.deparam.fragment( [ url ] [, coerce ] );
url | (String) An optional params string or URL containing fragment (hash) params to be parsed. If url is omitted, the current window.location.href is used. |
coerce | (Boolean) If true, coerces any numbers or true, false, null, and undefined to their actual value. Defaults to false if omitted. |
(Object) An object representing the deserialized params string.
Functions | |
jQuery. | Get the internal “Default URL attribute per tag” list, or augment the list with additional tag-attribute pairs, in case the defaults are insufficient. |
jQuery. | Update URL attribute in one or more elements, merging the current URL (with or without pre-existing query string params) plus any params object or string into a new URL, which is then set into that attribute. |
jQuery. | Update URL attribute in one or more elements, merging the current URL (with or without pre-existing fragment/hash params) plus any params object or string into a new URL, which is then set into that attribute. |
Get the internal “Default URL attribute per tag” list, or augment the list with additional tag-attribute pairs, in case the defaults are insufficient.
In the jQuery.fn.querystring and jQuery.fn.fragment methods, this list is used to determine which attribute contains the URL to be modified, if an “attr” param is not specified.
a | href |
base | href |
iframe | src |
img | src |
input | src |
form | action |
link | href |
script | src |
jQuery.elemUrlAttr( [ tag_attr ] );
tag_attr | (Object) An object containing a list of tag names and their associated default attribute names in the format { tag: ‘attr’, ... } to be merged into the internal tag-attribute list. |
(Object) An object containing all stored tag-attribute values.
Update URL attribute in one or more elements, merging the current URL (with or without pre-existing query string params) plus any params object or string into a new URL, which is then set into that attribute. Like jQuery.param.querystring (build url), but for all elements in a jQuery collection.
jQuery('selector').querystring( [ attr, ] params [, merge_mode ] );
attr | (String) Optional name of an attribute that will contain a URL to merge params or url into. See jQuery.elemUrlAttr for a list of default attributes. |
params | (Object) A params object to be merged into the URL attribute. |
params | (String) A URL containing query string params, or params string to be merged into the URL attribute. |
merge_mode | (Number) Merge behavior defaults to 0 if merge_mode is not specified, and is as-follows: |
(jQuery) The initial jQuery collection of elements, but with modified URL attribute values.
Update URL attribute in one or more elements, merging the current URL (with or without pre-existing fragment/hash params) plus any params object or string into a new URL, which is then set into that attribute. Like jQuery.param.fragment (build url), but for all elements in a jQuery collection.
jQuery('selector').fragment( [ attr, ] params [, merge_mode ] );
attr | (String) Optional name of an attribute that will contain a URL to merge params into. See jQuery.elemUrlAttr for a list of default attributes. |
params | (Object) A params object to be merged into the URL attribute. |
params | (String) A URL containing fragment (hash) params, or params string to be merged into the URL attribute. |
merge_mode | (Number) Merge behavior defaults to 0 if merge_mode is not specified, and is as-follows: |
(jQuery) The initial jQuery collection of elements, but with modified URL attribute values.
Functions | |
jQuery. | Adds a ‘state’ into the browser history at the current position, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state). |
jQuery. | Retrieves the current ‘state’ from the browser history, parsing location.hash for a specific key or returning an object containing the entire state, optionally coercing numbers, booleans, null and undefined values. |
jQuery. | Remove one or more keys from the current browser history ‘state’, creating a new state, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state). |
Events | |
hashchange event (BBQ) | In jQuery 1.4 and newer, the event object passed into any hashchange event callback is augmented with a copy of the location.hash fragment at the time the event was triggered as its event.fragment property. |
Files | |
jQuery hashchange event | Version: 1.3, Last updated: 7/21/2010 |
License | Copyright © 2010 “Cowboy” Ben Alman, Dual licensed under the MIT and GPL licenses. |
Examples | These working examples, complete with fully commented code, illustrate a few ways in which this plugin can be used. |
Support and Testing | Information about what version or versions of jQuery this plugin has been tested with, what browsers it has been tested in, and where the unit tests reside (so you can test it yourself). |
Known issues | While this jQuery hashchange event implementation is quite stable and robust, there are a few unfortunate browser bugs surrounding expected hashchange event-based behaviors, independent of any JavaScript window.onhashchange abstraction. |
Release History | |
Functions | |
jQuery. | Bind a handler to the window.onhashchange event or trigger all bound window.onhashchange event handlers. |
Properties | |
jQuery. | The numeric interval (in milliseconds) at which the hashchange event polling loop executes. |
jQuery. | If you’re setting document.domain in your JavaScript, and you want hash history to work in IE6/7, not only must this property be set, but you must also set document.domain BEFORE jQuery is loaded into the page. |
jQuery. | If, for some reason, you need to specify an Iframe src file (for example, when setting document.domain as in jQuery.fn.hashchange.domain), you can do so using this property. |
Events | |
hashchange event | Fired when location.hash changes. |
Adds a ‘state’ into the browser history at the current position, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state).
If no arguments are passed, an empty state is created, which is just a shortcut for jQuery.bbq.pushState( {}, 2 ).
jQuery.bbq.pushState( [ params [, merge_mode ] ] );
params | (String) A serialized params string or a hash string beginning with # to merge into location.hash. |
params | (Object) A params object to merge into location.hash. |
merge_mode | (Number) Merge behavior defaults to 0 if merge_mode is not specified (unless a hash string beginning with # is specified, in which case merge behavior defaults to 2), and is as-follows: |
Nothing.
Retrieves the current ‘state’ from the browser history, parsing location.hash for a specific key or returning an object containing the entire state, optionally coercing numbers, booleans, null and undefined values.
jQuery.bbq.getState( [ key ] [, coerce ] );
key | (String) An optional state key for which to return a value. |
coerce | (Boolean) If true, coerces any numbers or true, false, null, and undefined to their actual value. Defaults to false. |
(Anything) If key is passed, returns the value corresponding with that key in the location.hash ‘state’, or undefined. If not, an object representing the entire ‘state’ is returned.
Remove one or more keys from the current browser history ‘state’, creating a new state, setting location.hash and triggering any bound hashchange event callbacks (provided the new state is different than the previous state).
If no arguments are passed, an empty state is created, which is just a shortcut for jQuery.bbq.pushState( {}, 2 ).
jQuery.bbq.removeState( [ key [, key ... ] ] );
key | (String) One or more key values to remove from the current state, passed as individual arguments. |
key | (Array) A single array argument that contains a list of key values to remove from the current state. |
Nothing.
In jQuery 1.4 and newer, the event object passed into any hashchange event callback is augmented with a copy of the location.hash fragment at the time the event was triggered as its event.fragment property. In addition, the event.getState method operates on this property (instead of location.hash) which allows this fragment-as-a-state to be referenced later, even after window.location may have changed.
Note that event.fragment and event.getState are not defined according to W3C (or any other) specification, but will still be available whether or not the hashchange event exists natively in the browser, because of the utility they provide.
The event.fragment property contains the output of jQuery.param.fragment and the event.getState method is equivalent to the jQuery.bbq.getState method.
$(window).bind( 'hashchange', function( event ) { var hash_str = event.fragment, param_obj = event.getState(), param_val = event.getState( 'param_name' ), param_val_coerced = event.getState( 'param_name', true ); ... });
In jQuery 1.3.2, the event object cannot to be augmented as in jQuery 1.4+, so the fragment state isn’t bound to the event object and must instead be parsed using the jQuery.param.fragment and jQuery.bbq.getState methods.
$(window).bind( 'hashchange', function( event ) { var hash_str = $.param.fragment(), param_obj = $.bbq.getState(), param_val = $.bbq.getState( 'param_name' ), param_val_coerced = $.bbq.getState( 'param_name', true ); ... });
Version: 1.3, Last updated: 7/21/2010
Copyright © 2010 “Cowboy” Ben Alman, Dual licensed under the MIT and GPL licenses. http://benalman.com/about/license/
These working examples, complete with fully commented code, illustrate a few ways in which this plugin can be used.
hashchange event | http://benalman.com |
document.domain | http://benalman.com |
Information about what version or versions of jQuery this plugin has been tested with, what browsers it has been tested in, and where the unit tests reside (so you can test it yourself).
jQuery Versions | 1.2.6, 1.3.2, 1.4.1, 1.4.2 |
Browsers Tested | Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. |
Unit Tests | http://benalman.com |
While this jQuery hashchange event implementation is quite stable and robust, there are a few unfortunate browser bugs surrounding expected hashchange event-based behaviors, independent of any JavaScript window.onhashchange abstraction. See the following examples for more information:
Chrome: Back Button | http://benalman.com |
Firefox: Remote XMLHttpRequest | http://benalman.com |
WebKit: Back Button in an Iframe | http://benalman.com |
Safari: Back Button from a different domain | http://benalman.com |
Also note that should a browser natively support the window.onhashchange event, but not report that it does, the fallback polling loop will be used.
1.3 | (7/21/2010) Reorganized IE6/7 Iframe code to make it more “removable” for mobile-only development. Added IE6/7 document.title support. Attempted to make Iframe as hidden as possible by using techniques from http://www.paciellogroup.com/blog/?p=604. Added support for the “shortcut” format $(window).hashchange( fn ) and $(window).hashchange() like jQuery provides for built-in events. Renamed jQuery.hashchangeDelay to jQuery.fn.hashchange.delay and lowered its default value to 50. Added jQuery.fn.hashchange.domain and jQuery.fn.hashchange.src properties plus document-domain.html file to address access denied issues when setting document.domain in IE6/7. |
1.2 | (2/11/2010) Fixed a bug where coming back to a page using this plugin from a page on another domain would cause an error in Safari 4. Also, IE6/7 Iframe is now inserted after the body (this actually works), which prevents the page from scrolling when the event is first bound. Event can also now be bound before DOM ready, but it won’t be usable before then in IE6/7. |
1.1 | (1/21/2010) Incorporated document.documentMode test to fix IE8 bug where browser version is incorrectly reported as 8.0, despite inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. |
1.0 | (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special window.onhashchange functionality into a separate plugin for users who want just the basic event & back button support, without all the extra awesomeness that BBQ provides. This plugin will be included as part of jQuery BBQ, but also be available separately. |
Bind a handler to the window.onhashchange event or trigger all bound window.onhashchange event handlers. This behavior is consistent with jQuery’s built-in event handlers.
jQuery(window).hashchange( [ handler ] );
handler | (Function) Optional handler to be bound to the hashchange event. This is a “shortcut” for the more verbose form: jQuery(window).bind( ‘hashchange’, handler ). If handler is omitted, all bound window.onhashchange event handlers will be triggered. This is a shortcut for the more verbose jQuery(window).trigger( ‘hashchange’ ). These forms are described in the hashchange event section. |
(jQuery) The initial jQuery collection of elements.
The numeric interval (in milliseconds) at which the hashchange event polling loop executes. Defaults to 50.
If you’re setting document.domain in your JavaScript, and you want hash history to work in IE6/7, not only must this property be set, but you must also set document.domain BEFORE jQuery is loaded into the page. This property is only applicable if you are supporting IE6/7 (or IE8 operating in “IE7 compatibility” mode).
In addition, the jQuery.fn.hashchange.src property must be set to the path of the included “document-domain.html” file, which can be renamed or modified if necessary (note that the document.domain specified must be the same in both your main JavaScript as well as in this file).
jQuery.fn.hashchange.domain = document.domain;
If, for some reason, you need to specify an Iframe src file (for example, when setting document.domain as in jQuery.fn.hashchange.domain), you can do so using this property. Note that when using this property, history won’t be recorded in IE6/7 until the Iframe src file loads. This property is only applicable if you are supporting IE6/7 (or IE8 operating in “IE7 compatibility” mode).
jQuery.fn.hashchange.src = ‘path/to/file.html’;
Fired when location.hash changes. In browsers that support it, the native HTML5 window.onhashchange event is used, otherwise a polling loop is initialized, running every jQuery.fn.hashchange.delay milliseconds to see if the hash has changed. In IE6/7 (and IE8 operating in “IE7 compatibility” mode), a hidden Iframe is created to allow the back button and hash-based history to work.
// Bind an event handler. jQuery(window).hashchange( function(e) { var hash = location.hash; ... }); // Manually trigger the event handler. jQuery(window).hashchange();
// Bind an event handler. jQuery(window).bind( 'hashchange', function(e) { var hash = location.hash; ... }); // Manually trigger the event handler. jQuery(window).trigger( 'hashchange' );