Tizen 2.1 base
[platform/framework/web/web-ui-fw.git] / libs / js / jquery-mobile-1.0.1pre / tools / log-page-events.js
1 /*!
2  * jQuery Mobile v@VERSION
3  * http://jquerymobile.com/
4  *
5  * Copyright 2011, jQuery Project
6  * Dual licensed under the MIT or GPL Version 2 licenses.
7  * http://jquery.org/license
8  */
9
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.
14
15 (function($, window, document) {
16         if ( typeof $ === "undefined" ) {
17                 alert( "log-page-events.js requires jQuery core!" );
18                 return;
19         }
20
21         var pageEvents = "mobileinit pagebeforechange pagechange pagechangefailed pagebeforeload pageload pageloadfailed pagebeforecreate pagecreate pageinit pagebeforeshow pageshow pagebeforehide pagehide pageremove";
22
23         function getElementDesc( ele )
24         {
25                 var result = [];
26                 if ( ele ) {
27                         result.push( ele.nodeName.toLowerCase() );
28                         var c = ele.className;
29                         if ( c ) {
30                                 c = c.replace( /^\s+|\s+$/, "" ).replace( /\s+/, " " );
31                                 if (c) {
32                                         result.push( "." + c.split( " " ).join( "." ) );
33                                 }
34                         }
35                         if ( ele.id ){
36                                 result.push( "#" + ele.id )
37                         }
38                 }
39                 return result.join( "" );
40         }
41
42         function debugLog( msg )
43         {
44                 console.log( msg );
45         }
46
47         function getNativeEvent( event ) {
48         
49                 while ( event && typeof event.originalEvent !== "undefined" ) {
50                         event = event.originalEvent;
51                 }
52                 return event;
53         }
54
55         function logEvent( event, data )
56         {
57                 var result = event.type + " (" + (new Date).getTime() + ")\n";
58
59                 switch( event.type )
60                 {
61                         case "pagebeforechange":
62                         case "pagechange":
63                         case "pagechangefailed":
64                                 result += "\tpage: ";
65                                 if ( typeof data.toPage === "string" ) {
66                                         result += data.toPage;
67                                 } else {
68                                         result += getElementDesc( data.toPage[ 0 ] ) + "\n\tdata-url: " + data.toPage.jqmData( "url" );
69                                 }
70                                 result += "\n\n"
71                                 break;
72                         case "pagebeforeload":
73                         case "pageloadfailed":
74                                 result += "\turl: " + data.url + "\n\tabsUrl: " + data.absUrl + "\n\n";
75                                 break;
76                         case "pageload":
77                                 result += "\turl: " + data.url + "\n\tabsUrl: " + data.absUrl + "\n\tpage: " + getElementDesc( data.page[ 0 ] ) + "\n\n";
78                                 break;
79                         case "pagebeforeshow":
80                         case "pageshow":
81                         case "pagebeforehide":
82                         case "pagehide":
83                                 result += "\tpage: " + getElementDesc( event.target ) + "\n";
84                                 result += "\tdata-url: " + $( event.target ).jqmData( "url" ) + "\n\n";
85                                 break;
86                         case "pagebeforecreate":
87                         case "pagecreate":
88                         case "pageinit":
89                                 result += "\telement: " + getElementDesc( event.target ) + "\n\n";
90                                 break;
91                         case "hashchange":
92                                 result += "\tlocation: " + location.href + "\n\n";
93                                 break;
94                         case "popstate":
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" : "" );
98                                 break;
99                 }
100
101                 debugLog( result );
102         }
103
104         // Now add our logger.
105         $( document ).bind( pageEvents, logEvent );
106         $( window ).bind( "hashchange popstate", logEvent );
107
108 })( jQuery, window, document );