107 lines
2.8 KiB
HTML
107 lines
2.8 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>Testing dojo.behavior</title>
|
||
|
<style type="text/css">
|
||
|
@import "../resources/dojo.css";
|
||
|
</style>
|
||
|
<script type="text/javascript"
|
||
|
src="../dojo.js" djConfig="isDebug: true, popup: true"></script>
|
||
|
<script type="text/javascript">
|
||
|
dojo.require("doh.runner");
|
||
|
dojo.require("dojo.behavior");
|
||
|
|
||
|
var applyCount = 0;
|
||
|
|
||
|
var behaviorObj = {
|
||
|
".bar": function(elem){
|
||
|
dojo.style(elem, "opacity", 0.5);
|
||
|
applyCount++;
|
||
|
},
|
||
|
".foo > span": function(elem){
|
||
|
elem.style.fontStyle = "italic";
|
||
|
applyCount++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
topicCount = 0;
|
||
|
dojo.subscribe("/foo", function(){ topicCount++; });
|
||
|
|
||
|
// no behaviors should be executed when onload fires
|
||
|
dojo.addOnLoad(function(){
|
||
|
doh.register("t",
|
||
|
[
|
||
|
function add(t){
|
||
|
t.f(dojo.behavior._behaviors[".bar"]);
|
||
|
t.f(dojo.behavior._behaviors[".foo > span"]);
|
||
|
dojo.behavior.add(behaviorObj);
|
||
|
// make sure they got plopped in
|
||
|
t.t(dojo.behavior._behaviors[".bar"]);
|
||
|
t.is(1, dojo.behavior._behaviors[".bar"].length);
|
||
|
t.t(dojo.behavior._behaviors[".foo > span"]);
|
||
|
t.is(1, dojo.behavior._behaviors[".foo > span"].length);
|
||
|
},
|
||
|
function apply(t){
|
||
|
t.is(0, applyCount);
|
||
|
dojo.behavior.apply();
|
||
|
t.is(2, applyCount);
|
||
|
|
||
|
// reapply and make sure we only match once
|
||
|
dojo.behavior.apply();
|
||
|
t.is(2, applyCount);
|
||
|
},
|
||
|
function reapply(t){
|
||
|
t.is(2, applyCount);
|
||
|
// add the rules again
|
||
|
dojo.behavior.add(behaviorObj);
|
||
|
dojo.behavior.apply();
|
||
|
t.is(4, applyCount);
|
||
|
// dojo.behavior.apply();
|
||
|
// t.is(4, applyCount);
|
||
|
// dojo.query(".bar").styles("opacity", 1.0);
|
||
|
},
|
||
|
function topics(t){
|
||
|
var d = new doh.Deferred();
|
||
|
t.is(0, topicCount);
|
||
|
dojo.behavior.add({ ".foo": "/foo" });
|
||
|
dojo.behavior.apply();
|
||
|
t.is(2, topicCount);
|
||
|
|
||
|
dojo.behavior.add({ ".foo": {
|
||
|
"onfocus": "/foo"
|
||
|
}
|
||
|
});
|
||
|
dojo.behavior.apply();
|
||
|
t.is(2, topicCount);
|
||
|
dojo.byId("blah").focus();
|
||
|
dojo.byId("blah").blur();
|
||
|
dojo.byId("blah").focus();
|
||
|
setTimeout(function(){
|
||
|
// blur/focus event generation isn't synchronous on IE
|
||
|
try{
|
||
|
t.is(4, topicCount);
|
||
|
d.callback(true);
|
||
|
}catch(e){
|
||
|
d.errback(e);
|
||
|
}
|
||
|
}, 10);
|
||
|
return d;
|
||
|
}
|
||
|
]
|
||
|
);
|
||
|
doh.run();
|
||
|
});
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="foo" id="fooOne">
|
||
|
<span>.foo > span</span>
|
||
|
<div class="bar">
|
||
|
<span>.foo > .bar > span</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
<input type="text" id="blah" class="foo blah" name="thinger" value="thinger" tabIndex="0">
|
||
|
</body>
|
||
|
</html>
|