+++ /dev/null
-<!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>