2 * jQuery Mobile v@VERSION
3 * http://jquerymobile.com/
5 * Copyright 2011, jQuery Project
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
10 // This is code that can be used as a simple bookmarklet for debugging
11 // page loading and navigation in pages that use the jQuery Mobile framework.
12 // All messages are sent to the browser's console.log so to see the messages,
13 // you need to make sure you enable the console/log in your browser.
15 (function($, window, document) {
16 if ( typeof $ === "undefined" ) {
17 alert( "log-page-events.js requires jQuery core!" );
21 var pageEvents = "mobileinit pagebeforechange pagechange pagechangefailed pagebeforeload pageload pageloadfailed pagebeforecreate pagecreate pageinit pagebeforeshow pageshow pagebeforehide pagehide pageremove";
23 function getElementDesc( ele )
27 result.push( ele.nodeName.toLowerCase() );
28 var c = ele.className;
30 c = c.replace( /^\s+|\s+$/, "" ).replace( /\s+/, " " );
32 result.push( "." + c.split( " " ).join( "." ) );
36 result.push( "#" + ele.id )
39 return result.join( "" );
42 function debugLog( msg )
47 function getNativeEvent( event ) {
49 while ( event && typeof event.originalEvent !== "undefined" ) {
50 event = event.originalEvent;
55 function logEvent( event, data )
57 var result = event.type + " (" + (new Date).getTime() + ")\n";
61 case "pagebeforechange":
63 case "pagechangefailed":
65 if ( typeof data.toPage === "string" ) {
66 result += data.toPage;
68 result += getElementDesc( data.toPage[ 0 ] ) + "\n\tdata-url: " + data.toPage.jqmData( "url" );
72 case "pagebeforeload":
73 case "pageloadfailed":
74 result += "\turl: " + data.url + "\n\tabsUrl: " + data.absUrl + "\n\n";
77 result += "\turl: " + data.url + "\n\tabsUrl: " + data.absUrl + "\n\tpage: " + getElementDesc( data.page[ 0 ] ) + "\n\n";
79 case "pagebeforeshow":
81 case "pagebeforehide":
83 result += "\tpage: " + getElementDesc( event.target ) + "\n";
84 result += "\tdata-url: " + $( event.target ).jqmData( "url" ) + "\n\n";
86 case "pagebeforecreate":
89 result += "\telement: " + getElementDesc( event.target ) + "\n\n";
92 result += "\tlocation: " + location.href + "\n\n";
95 var e = getNativeEvent( event );
96 result += "\tlocation: " + location.href + "\n";
97 result += "\tstate.hash: " + ( e.state && e.state.hash ? e.state.hash + "\n\n" : "" );
104 // Now add our logger.
105 $( document ).bind( pageEvents, logEvent );
106 $( window ).bind( "hashchange popstate", logEvent );
108 })( jQuery, window, document );