historyjs-rails 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +8 -6
- data/historyjs-rails.gemspec +2 -2
- data/lib/historyjs/rails/version.rb +2 -2
- data/spec/historyjs/rails/version_spec.rb +2 -2
- data/vendor/assets/javascripts/history_adapter_jquery.js +77 -77
- data/vendor/assets/javascripts/history_adapter_mootools.js +84 -84
- data/vendor/assets/javascripts/history_adapter_native.js +121 -121
- data/vendor/assets/javascripts/history_adapter_right.js +78 -78
- data/vendor/assets/javascripts/history_adapter_zepto.js +74 -74
- data/vendor/assets/javascripts/history_core.js +1943 -1943
- data/vendor/assets/javascripts/history_html4.js +621 -621
- data/vendor/assets/javascripts/json2.js +480 -480
- metadata +18 -8
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# History.js for Rails ![Build Status][travis_ci_build_status]
|
1
|
+
# History.js for Rails [![Build Status][travis_ci_build_status]][travis_ci][![Dependency Status][gemnasium_dependency_status]][gemnasium]
|
2
2
|
|
3
|
-
Provides History.js (1.7.1) for use with Rails 3
|
3
|
+
Provides History.js (1.7.1) for use with Rails 3 & 4
|
4
4
|
|
5
|
-
[RubyGems][ruby_gems] | [Ruby Toolbox][ruby_toolbox] | [GitHub][github] | [Travis CI][travis_ci] | [RubyDoc][ruby_doc]
|
5
|
+
[RubyGems][ruby_gems] | [Ruby Toolbox][ruby_toolbox] | [GitHub][github] | [Travis CI][travis_ci] | [Gemnasium][gemnasium] | [RubyDoc][ruby_doc]
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
### Rails 3.1+
|
@@ -75,10 +75,12 @@ History.js is now installed. Woop!
|
|
75
75
|
##History.js Resources
|
76
76
|
[GitHub][historyjs_github]
|
77
77
|
|
78
|
-
[github]: http://github.com/philostler/historyjs-rails
|
79
|
-
[ruby_doc]: http://rubydoc.info/github/philostler/historyjs-rails/master/frames
|
80
78
|
[ruby_gems]: http://rubygems.org/gems/historyjs-rails
|
79
|
+
[ruby_toolbox]: http://www.ruby-toolbox.com/projects/historyjs-rails
|
80
|
+
[github]: http://github.com/philostler/historyjs-rails
|
81
81
|
[travis_ci]: http://travis-ci.org/philostler/historyjs-rails
|
82
82
|
[travis_ci_build_status]: https://secure.travis-ci.org/philostler/historyjs-rails.png
|
83
|
-
[
|
83
|
+
[gemnasium]: https://gemnasium.com/philostler/historyjs-rails
|
84
|
+
[gemnasium_dependency_status]: https://gemnasium.com/philostler/historyjs-rails.png
|
85
|
+
[ruby_doc]: http://rubydoc.info/github/philostler/historyjs-rails/master/frames
|
84
86
|
[historyjs_github]: http://github.com/balupton/history.js
|
data/historyjs-rails.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = %q{History.js for Rails}
|
12
12
|
s.description = %q{Provides History.js for use with Rails 3}
|
13
13
|
|
14
|
-
s.add_dependency "railties", "
|
14
|
+
s.add_dependency "railties", ">= 3.0"
|
15
15
|
|
16
16
|
s.add_development_dependency "rspec", "~> 2.0"
|
17
17
|
|
@@ -25,4 +25,4 @@ Gem::Specification.new do |s|
|
|
25
25
|
Dir["**/*.js"] +
|
26
26
|
Dir["**/*.rb"]
|
27
27
|
s.require_paths = ["lib"]
|
28
|
-
end
|
28
|
+
end
|
@@ -1,77 +1,77 @@
|
|
1
|
-
/**
|
2
|
-
* History.js jQuery Adapter
|
3
|
-
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
-
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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
|
14
|
-
History = window.History = window.History||{},
|
15
|
-
jQuery = window.jQuery;
|
16
|
-
|
17
|
-
// Check Existence
|
18
|
-
if ( typeof History.Adapter !== 'undefined' ) {
|
19
|
-
throw new Error('History.js Adapter has already been loaded...');
|
20
|
-
}
|
21
|
-
|
22
|
-
// Add the Adapter
|
23
|
-
History.Adapter = {
|
24
|
-
/**
|
25
|
-
* History.Adapter.bind(el,event,callback)
|
26
|
-
* @param {Element|string} el
|
27
|
-
* @param {string} event - custom and standard events
|
28
|
-
* @param {function} callback
|
29
|
-
* @return {void}
|
30
|
-
*/
|
31
|
-
bind: function(el,event,callback){
|
32
|
-
jQuery(el).bind(event,callback);
|
33
|
-
},
|
34
|
-
|
35
|
-
/**
|
36
|
-
* History.Adapter.trigger(el,event)
|
37
|
-
* @param {Element|string} el
|
38
|
-
* @param {string} event - custom and standard events
|
39
|
-
* @param {Object=} extra - a object of extra event data (optional)
|
40
|
-
* @return {void}
|
41
|
-
*/
|
42
|
-
trigger: function(el,event,extra){
|
43
|
-
jQuery(el).trigger(event,extra);
|
44
|
-
},
|
45
|
-
|
46
|
-
/**
|
47
|
-
* History.Adapter.extractEventData(key,event,extra)
|
48
|
-
* @param {string} key - key for the event data to extract
|
49
|
-
* @param {string} event - custom and standard events
|
50
|
-
* @param {Object=} extra - a object of extra event data (optional)
|
51
|
-
* @return {mixed}
|
52
|
-
*/
|
53
|
-
extractEventData: function(key,event,extra){
|
54
|
-
// jQuery Native then jQuery Custom
|
55
|
-
var result = (event && event.originalEvent && event.originalEvent[key]) || (extra && extra[key]) || undefined;
|
56
|
-
|
57
|
-
// Return
|
58
|
-
return result;
|
59
|
-
},
|
60
|
-
|
61
|
-
/**
|
62
|
-
* History.Adapter.onDomLoad(callback)
|
63
|
-
* @param {function} callback
|
64
|
-
* @return {void}
|
65
|
-
*/
|
66
|
-
onDomLoad: function(callback) {
|
67
|
-
jQuery(callback);
|
68
|
-
}
|
69
|
-
};
|
70
|
-
|
71
|
-
// Try and Initialise History
|
72
|
-
if ( typeof History.init !== 'undefined' ) {
|
73
|
-
History.init();
|
74
|
-
}
|
75
|
-
|
76
|
-
})(window);
|
77
|
-
|
1
|
+
/**
|
2
|
+
* History.js jQuery Adapter
|
3
|
+
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
+
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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
|
14
|
+
History = window.History = window.History||{},
|
15
|
+
jQuery = window.jQuery;
|
16
|
+
|
17
|
+
// Check Existence
|
18
|
+
if ( typeof History.Adapter !== 'undefined' ) {
|
19
|
+
throw new Error('History.js Adapter has already been loaded...');
|
20
|
+
}
|
21
|
+
|
22
|
+
// Add the Adapter
|
23
|
+
History.Adapter = {
|
24
|
+
/**
|
25
|
+
* History.Adapter.bind(el,event,callback)
|
26
|
+
* @param {Element|string} el
|
27
|
+
* @param {string} event - custom and standard events
|
28
|
+
* @param {function} callback
|
29
|
+
* @return {void}
|
30
|
+
*/
|
31
|
+
bind: function(el,event,callback){
|
32
|
+
jQuery(el).bind(event,callback);
|
33
|
+
},
|
34
|
+
|
35
|
+
/**
|
36
|
+
* History.Adapter.trigger(el,event)
|
37
|
+
* @param {Element|string} el
|
38
|
+
* @param {string} event - custom and standard events
|
39
|
+
* @param {Object=} extra - a object of extra event data (optional)
|
40
|
+
* @return {void}
|
41
|
+
*/
|
42
|
+
trigger: function(el,event,extra){
|
43
|
+
jQuery(el).trigger(event,extra);
|
44
|
+
},
|
45
|
+
|
46
|
+
/**
|
47
|
+
* History.Adapter.extractEventData(key,event,extra)
|
48
|
+
* @param {string} key - key for the event data to extract
|
49
|
+
* @param {string} event - custom and standard events
|
50
|
+
* @param {Object=} extra - a object of extra event data (optional)
|
51
|
+
* @return {mixed}
|
52
|
+
*/
|
53
|
+
extractEventData: function(key,event,extra){
|
54
|
+
// jQuery Native then jQuery Custom
|
55
|
+
var result = (event && event.originalEvent && event.originalEvent[key]) || (extra && extra[key]) || undefined;
|
56
|
+
|
57
|
+
// Return
|
58
|
+
return result;
|
59
|
+
},
|
60
|
+
|
61
|
+
/**
|
62
|
+
* History.Adapter.onDomLoad(callback)
|
63
|
+
* @param {function} callback
|
64
|
+
* @return {void}
|
65
|
+
*/
|
66
|
+
onDomLoad: function(callback) {
|
67
|
+
jQuery(callback);
|
68
|
+
}
|
69
|
+
};
|
70
|
+
|
71
|
+
// Try and Initialise History
|
72
|
+
if ( typeof History.init !== 'undefined' ) {
|
73
|
+
History.init();
|
74
|
+
}
|
75
|
+
|
76
|
+
})(window);
|
77
|
+
|
@@ -1,84 +1,84 @@
|
|
1
|
-
/**
|
2
|
-
* History.js MooTools Adapter
|
3
|
-
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
-
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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
|
14
|
-
History = window.History = window.History||{},
|
15
|
-
MooTools = window.MooTools,
|
16
|
-
Element = window.Element;
|
17
|
-
|
18
|
-
// Check Existence
|
19
|
-
if ( typeof History.Adapter !== 'undefined' ) {
|
20
|
-
throw new Error('History.js Adapter has already been loaded...');
|
21
|
-
}
|
22
|
-
|
23
|
-
// Make MooTools aware of History.js Events
|
24
|
-
Object.append(Element.NativeEvents,{
|
25
|
-
'popstate':2,
|
26
|
-
'hashchange':2
|
27
|
-
});
|
28
|
-
|
29
|
-
// Add the Adapter
|
30
|
-
History.Adapter = {
|
31
|
-
/**
|
32
|
-
* History.Adapter.bind(el,event,callback)
|
33
|
-
* @param {Element|string} el
|
34
|
-
* @param {string} event - custom and standard events
|
35
|
-
* @param {function} callback
|
36
|
-
* @return {void}
|
37
|
-
*/
|
38
|
-
bind: function(el,event,callback){
|
39
|
-
var El = typeof el === 'string' ? document.id(el) : el;
|
40
|
-
El.addEvent(event,callback);
|
41
|
-
},
|
42
|
-
|
43
|
-
/**
|
44
|
-
* History.Adapter.trigger(el,event)
|
45
|
-
* @param {Element|string} el
|
46
|
-
* @param {string} event - custom and standard events
|
47
|
-
* @param {Object=} extra - a object of extra event data (optional)
|
48
|
-
* @return void
|
49
|
-
*/
|
50
|
-
trigger: function(el,event,extra){
|
51
|
-
var El = typeof el === 'string' ? document.id(el) : el;
|
52
|
-
El.fireEvent(event,extra);
|
53
|
-
},
|
54
|
-
|
55
|
-
/**
|
56
|
-
* History.Adapter.extractEventData(key,event,extra)
|
57
|
-
* @param {string} key - key for the event data to extract
|
58
|
-
* @param {string} event - custom and standard events
|
59
|
-
* @return {mixed}
|
60
|
-
*/
|
61
|
-
extractEventData: function(key,event){
|
62
|
-
// MooTools Native then MooTools Custom
|
63
|
-
var result = (event && event.event && event.event[key]) || (event && event[key]) || undefined;
|
64
|
-
|
65
|
-
// Return
|
66
|
-
return result;
|
67
|
-
},
|
68
|
-
|
69
|
-
/**
|
70
|
-
* History.Adapter.onDomLoad(callback)
|
71
|
-
* @param {function} callback
|
72
|
-
* @return {void}
|
73
|
-
*/
|
74
|
-
onDomLoad: function(callback) {
|
75
|
-
window.addEvent('domready',callback);
|
76
|
-
}
|
77
|
-
};
|
78
|
-
|
79
|
-
// Try and Initialise History
|
80
|
-
if ( typeof History.init !== 'undefined' ) {
|
81
|
-
History.init();
|
82
|
-
}
|
83
|
-
|
84
|
-
})(window);
|
1
|
+
/**
|
2
|
+
* History.js MooTools Adapter
|
3
|
+
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
+
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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
|
14
|
+
History = window.History = window.History||{},
|
15
|
+
MooTools = window.MooTools,
|
16
|
+
Element = window.Element;
|
17
|
+
|
18
|
+
// Check Existence
|
19
|
+
if ( typeof History.Adapter !== 'undefined' ) {
|
20
|
+
throw new Error('History.js Adapter has already been loaded...');
|
21
|
+
}
|
22
|
+
|
23
|
+
// Make MooTools aware of History.js Events
|
24
|
+
Object.append(Element.NativeEvents,{
|
25
|
+
'popstate':2,
|
26
|
+
'hashchange':2
|
27
|
+
});
|
28
|
+
|
29
|
+
// Add the Adapter
|
30
|
+
History.Adapter = {
|
31
|
+
/**
|
32
|
+
* History.Adapter.bind(el,event,callback)
|
33
|
+
* @param {Element|string} el
|
34
|
+
* @param {string} event - custom and standard events
|
35
|
+
* @param {function} callback
|
36
|
+
* @return {void}
|
37
|
+
*/
|
38
|
+
bind: function(el,event,callback){
|
39
|
+
var El = typeof el === 'string' ? document.id(el) : el;
|
40
|
+
El.addEvent(event,callback);
|
41
|
+
},
|
42
|
+
|
43
|
+
/**
|
44
|
+
* History.Adapter.trigger(el,event)
|
45
|
+
* @param {Element|string} el
|
46
|
+
* @param {string} event - custom and standard events
|
47
|
+
* @param {Object=} extra - a object of extra event data (optional)
|
48
|
+
* @return void
|
49
|
+
*/
|
50
|
+
trigger: function(el,event,extra){
|
51
|
+
var El = typeof el === 'string' ? document.id(el) : el;
|
52
|
+
El.fireEvent(event,extra);
|
53
|
+
},
|
54
|
+
|
55
|
+
/**
|
56
|
+
* History.Adapter.extractEventData(key,event,extra)
|
57
|
+
* @param {string} key - key for the event data to extract
|
58
|
+
* @param {string} event - custom and standard events
|
59
|
+
* @return {mixed}
|
60
|
+
*/
|
61
|
+
extractEventData: function(key,event){
|
62
|
+
// MooTools Native then MooTools Custom
|
63
|
+
var result = (event && event.event && event.event[key]) || (event && event[key]) || undefined;
|
64
|
+
|
65
|
+
// Return
|
66
|
+
return result;
|
67
|
+
},
|
68
|
+
|
69
|
+
/**
|
70
|
+
* History.Adapter.onDomLoad(callback)
|
71
|
+
* @param {function} callback
|
72
|
+
* @return {void}
|
73
|
+
*/
|
74
|
+
onDomLoad: function(callback) {
|
75
|
+
window.addEvent('domready',callback);
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
// Try and Initialise History
|
80
|
+
if ( typeof History.init !== 'undefined' ) {
|
81
|
+
History.init();
|
82
|
+
}
|
83
|
+
|
84
|
+
})(window);
|
@@ -1,121 +1,121 @@
|
|
1
|
-
/**
|
2
|
-
* History.js Native Adapter
|
3
|
-
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
-
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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 and Initialise History
|
117
|
-
if ( typeof History.init !== 'undefined' ) {
|
118
|
-
History.init();
|
119
|
-
}
|
120
|
-
|
121
|
-
})(window);
|
1
|
+
/**
|
2
|
+
* History.js Native Adapter
|
3
|
+
* @author Benjamin Arthur Lupton <contact@balupton.com>
|
4
|
+
* @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
|
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 and Initialise History
|
117
|
+
if ( typeof History.init !== 'undefined' ) {
|
118
|
+
History.init();
|
119
|
+
}
|
120
|
+
|
121
|
+
})(window);
|