forked from yui/yui-caja
/
core_gadget.html
120 lines (87 loc) · 3.04 KB
/
core_gadget.html
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
<html>
<head>
</head>
<body>
<script>
YAHOO.log = cajita.log;
var L = YAHOO.lang;
cajita.log('start: ' + navigator.userAgent);
YAHOO.util.Event.onAvailable("div1", function(e) {
cajita.log(this.id + " available");
});
// @BUG {Caja} no DOMReady event fires
YAHOO.util.Event.onDOMReady(function(e) {
cajita.log("DOMReady");
});
// @BUG {Caja} no window load event fires
YAHOO.util.Event.on(window, "load", function(e) {
cajita.log("YUI window load");
});
window.addEventListener("load", function(e) {
cajita.log("native window load");
}, false);
// @BUG {Caja} fake document must do something with event listeners
// to get a number of things to work.
YAHOO.util.Event.on(document, "click", function(e) {
cajita.log("document.click");
});
YAHOO.util.Event.addListener("div1", "click", function(e) {
var target = YAHOO.util.Event.getTarget(e);
cajita.log(target.id + " clicked: " + YAHOO.util.Event.getXY(e));
});
var data = {
a: "data"
};
var context = {
a: "context"
};
YAHOO.util.Event.on("div2", "click", function(e, data) {
cajita.log("data obj and context adjust: " + data.a + ": " + this.a);
}, data, context);
cajita.log("isArray []: " + L.isArray([]));
cajita.log("isArray {}: " + L.isArray({}));
// @KNOWNISSUE HTMLElement collections are arrays in Caja, and not live lists
cajita.log("isArray element collection: " + L.isArray(document.getElementsByTagName('div')));
// @KNOWNISSUE arguments collections are arrays in Caja rather than an array-like collection
function(arg1, arg2) {
cajita.log("isArray arguments collection: " + L.isArray(arguments));
}(1, 2);
// @BUG {Caja} The user agent string needs to provide the information about
// browser hosting the caja runtime.
cajita.log("UA: " + L.dump(YAHOO.env.ua, 0));
var ns = YAHOO.namespace('NEW_NAMESPACE.foo');
cajita.log("namepace + dump: " + L.dump(YAHOO, 0));
cajita.log("Dom.get('div1'): " + YAHOO.util.Dom.get('div1'));
var Animal = function() {
this.createEvent('myEvent');
this.subscribe('myEvent', this.handler, 'is an animal');
};
Animal.prototype.handler = function(arg) {
cajita.log('Animal');
};
YAHOO.augment(Animal, YAHOO.util.EventProvider);
var Dog = function() {
Animal.prototype.constructor.apply(this, arguments);
};
YAHOO.extend(Dog, Animal, {
handler: function() {
cajita.log('Dog: ' + arguments);
}
});
var Cat = function() {
Animal.prototype.constructor.apply(this, arguments);
};
YAHOO.extend(Cat, Animal, {
handler: function() {
cajita.log('Cat: ' + arguments);
}
});
var d = new Dog(), c = new Cat();
d.fireEvent('myEvent', 'the dog');
c.fireEvent('myEvent', 'the cat');
cajita.log('end');
</script>
<div class="div1">div1</div>
<div class="div2">div2</div>
</body>
</html>