-
Notifications
You must be signed in to change notification settings - Fork 13
/
component-5-dbgr-0-jquery.js
123 lines (118 loc) · 4.29 KB
/
component-5-dbgr-0-jquery.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
** ComponentJS -- Component System for JavaScript <http://componentjs.com>
** Copyright (c) 2009-2013 Ralf S. Engelschall <http://engelschall.com>
**
** This Source Code Form is subject to the terms of the Mozilla Public
** License, v. 2.0. If a copy of the MPL was not distributed with this
** file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/* minimum emulation of jQuery */
_cs.jq = function (sel, el) {
var result = [];
if (arguments.length === 1 && typeof sel !== "string")
result.push(sel);
else {
if (typeof el === "undefined")
el = DOCUMENT;
result = el.querySelectorAll(sel);
result = _cs.concat([], result);
}
_cs.extend(result, _cs.jq_methods);
return result;
};
_cs.jq_methods = {
ready: function (callback) {
/* not correct (because too complicated to
emulate portably), but sufficient for now! */
for (var i = 0; i < this.length; i++) {
(function (i) {
var el = this[i];
setTimeout(function () {
callback.call(el);
}, 250);
})(i);
}
},
bind: function (name, callback) {
for (var i = 0; i < this.length; i++) {
if (typeof this[i].addEventListener === "function")
this[i].addEventListener(name, callback, false);
else if (typeof this[i].attachEvent === "function")
this[i].attachEvent("on" + name, callback);
}
return this;
},
width: function (value) {
var result = (typeof value !== "undefined" ? this : undefined);
for (var i = 0; i < this.length; i++) {
if (typeof value === "undefined") {
result = this[i].offsetWidth;
if (typeof result === "undefined")
result = this[i].innerWidth;
if (typeof result === "undefined")
result = this[i].clientWidth;
}
else {
this[i].style.width = value;
}
}
return result;
},
height: function (value) {
var result = (typeof value !== "undefined" ? this : undefined);
for (var i = 0; i < this.length; i++) {
if (typeof value === "undefined") {
result = this[i].offsetHeight;
if (typeof result === "undefined")
result = this[i].innerHeight;
if (typeof result === "undefined")
result = this[i].clientHeight;
}
else {
this[i].style.height = value;
}
}
return result;
},
attr: function (name, value) {
var result = (typeof value !== "undefined" ? this : undefined);
for (var i = 0; i < this.length; i++) {
if (typeof value === "undefined")
result = this[i].getAttribute(name);
else
this[i].setAttribute(name, value);
}
return result;
},
html: function (html) {
for (var i = 0; i < this.length; i++) {
try {
/* direct approach (but does not work on all elements,
especially not on html, head and body, etc) */
this[i].innerHTML = html;
}
catch (e) {
/* create an arbitrary element on which we can use innerHTML */
var content = _cs.dbg.document.createElement("div");
/* set innerHTML, but use an outer wrapper element
to ensure we have a single root element */
content.innerHTML = "<div>" + html + "</div>";
/* remove all nodes from target node */
while (this[i].firstChild)
this[i].removeChild(this[i].firstChild);
/* add all nodes in our <div><div>...</div></div> enclosure */
for (var j = 0; j < content.firstChild.childNodes.length; j++)
this[i].appendChild(content.firstChild.childNodes[j]);
}
}
return this;
},
scrollTop: function (value) {
for (var i = 0; i < this.length; i++)
this[i].scrollTop = value;
return this;
},
get: function (pos) {
return this[pos];
}
};