PageSourceSearch

https://lighthouseapp.com/javascripts/lh3/bower/history.js/scripts…/history.adapter.native.js?1689818182

js lighthouseapp.com collected 2026-09-24 08:46:50 UTC 3,114 bytes, 121 lines download raw bytes

1/**
2 * History.js Native Adapter
3 * @author Benjamin Arthur Lupton <[email protected]>
4 * @copyright 2010-2011 Benjamin Arthur Lupton <[email protected]>
5 * @license New BSD License <http://creativecommons.org/licenses/BSD/>
6 */
7
8// Closure
9(function(window,undefined){
10	"use strict";
11
12	// Localise Globals
13	var History = window.History = window.History||{};
14
15	// Check Existence
16	if ( typeof History.Adapter !== 'undefined' ) {
17		throw new Error('History.js Adapter has already been loaded...');
18	}
19
20	// Add the Adapter
21	History.Adapter = {
22		/**
23		 * History.Adapter.handlers[uid][eventName] = Array
24		 */
25		handlers: {},
26
27		/**
28		 * History.Adapter._uid
29		 * The current element unique identifier
30		 */
31		_uid: 1,
32
33		/**
34		 * History.Adapter.uid(element)
35		 * @param {Element} element
36		 * @return {String} uid
37		 */
38		uid: function(element){
39			return element._uid || (element._uid = History.Adapter._uid++);
40		},
41
42		/**
43		 * History.Adapter.bind(el,event,callback)
44		 * @param {Element} element
45		 * @param {String} eventName - custom and standard events
46		 * @param {Function} callback
47		 * @return
48		 */
49		bind: function(element,eventName,callback){
50			// Prepare
51			var uid = History.Adapter.uid(element);
52
53			// Apply Listener
54			History.Adapter.handlers[uid] = History.Adapter.handlers[uid] || {};
55			History.Adapter.handlers[uid][eventName] = History.Adapter.handlers[uid][eventName] || [];
56			History.Adapter.handlers[uid][eventName].push(callback);
57
58			// Bind Global Listener
59			element['on'+eventName] = (function(element,eventName){
60				return function(event){
61					History.Adapter.trigger(element,eventName,event);
62				};
63			})(element,eventName);
64		},
65
66		/**
67		 * History.Adapter.trigger(el,event)
68		 * @param {Element} element
69		 * @param {String} eventName - custom and standard events
70		 * @param {Object} event - a object of event data
71		 * @return
72		 */
73		trigger: function(element,eventName,event){
74			// Prepare
75			event = event || {};
76			var uid = History.Adapter.uid(element),
77				i,n;
78
79			// Apply Listener
80			History.Adapter.handlers[uid] = History.Adapter.handlers[uid] || {};
81			History.Adapter.handlers[uid][eventName] = History.Adapter.handlers[uid][eventName] || [];
82
83			// Fire Listeners
84			for ( i=0,n=History.Adapter.handlers[uid][eventName].length; i<n; ++i ) {
85				History.Adapter.handlers[uid][eventName][i].apply(this,[event]);
86			}
87		},
88
89		/**
90		 * History.Adapter.extractEventData(key,event,extra)
91		 * @param {String} key - key for the event data to extract
92		 * @param {String} event - custom and standard events
93		 * @return {mixed}
94		 */
95		extractEventData: function(key,event){
96			var result = (event && event[key]) || undefined;
97			return result;
98		},
99
100		/**
101		 * History.Adapter.onDomLoad(callback)
102		 * @param {Function} callback
103		 * @return
104		 */
105		onDomLoad: function(callback) {
106			var timeout = window.setTimeout(function(){
107				callback();
108			},2000);
109			window.onload = function(){
110				clearTimeout(timeout);
111				callback();
112			};
113		}
114	};
115
116	// Try to Initialise History
117	if ( typeof History.init !== 'undefined' ) {
118		History.init();
119	}
120
121})(window);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.