SuperX-Kernmodul
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

103 lines
3.3 KiB

<html>
<head>
<title>Disconnect multiple events from the same trigger</title>
<script type="text/javascript">
// Dojo configuration
djConfig = {
isDebug: true
};
</script>
<script type="text/javascript"
src="../../dojo.js"></script>
<script type="text/javascript">
dojo.require("dojo.event.*");
/***** after advice *******/
var a = {
click: function(e) {
// all event connects here
dojo.debug("---------------------------------------------");
dojo.debug("After button clicked");
},
disc1: function(){
dojo.debug("disconnect after 1");
dojo.event.disconnect("after", a, "click", a, "disc1");
},
disc2: function(){
dojo.debug("disconnect after 2");
dojo.event.disconnect("after", a, "click", a, "disc2");
},
disc3: function(){
dojo.debug("disconnect after 3");
dojo.event.disconnect("after", a, "click", a, "disc3");
},
disc4: function(){
dojo.debug("disconnect after 4");
dojo.event.disconnect("after", a, "click", a, "disc4");
},
disc5: function(){
dojo.debug("disconnect after 5");
dojo.event.disconnect("after", a, "click", a, "disc5");
}
};
dojo.addOnLoad(function(){
dojo.event.connect("after", a, "click", a, "disc1");
dojo.event.connect("after", a, "click", a, "disc2");
dojo.event.connect("after", a, "click", a, "disc3");
dojo.event.connect("after", a, "click", a, "disc4");
dojo.event.connect("after", a, "click", a, "disc5");
});
/**** before advice ********/
var b = {
click: function(e) {
// all event connects here
dojo.debug("Before button clicked");
dojo.debug("---------------------------------------------");
},
disc1: function(){
dojo.debug("disconnect before 1");
dojo.event.disconnect("before", b, "click", b, "disc1");
},
disc2: function(){
dojo.debug("disconnect before 2");
dojo.event.disconnect("before", b, "click", b, "disc2");
},
disc3: function(){
dojo.debug("disconnect before 3");
dojo.event.disconnect("before", b, "click", b, "disc3");
},
disc4: function(){
dojo.debug("disconnect before 4");
dojo.event.disconnect("before", b, "click", b, "disc4");
},
disc5: function(){
dojo.debug("disconnect before 5");
dojo.event.disconnect("before", b, "click", b, "disc5");
}
};
dojo.addOnLoad(function(){
dojo.event.connect("before", b, "click", b, "disc1");
dojo.event.connect("before", b, "click", b, "disc2");
dojo.event.connect("before", b, "click", b, "disc3");
dojo.event.connect("before", b, "click", b, "disc4");
dojo.event.connect("before", b, "click", b, "disc5");
});
</script>
</head>
<body>
<h3>Disconnect many events from the trigger function</h3>
<h4>You shouldnt get any 'Null argument to unrollAdvice()' when clicking buttons</h4>
Test passes if it outputs like below, but only on first click<br/>
disconnect [after|before] 1<br/>
disconnect [after|before] 2<br/>
disconnect [after|before] 3<br/>
disconnect [after|before] 4<br/>
disconnect [after|before] 5<br/>
<button onclick="a.click();">Disconnect 5 (after) listeners in one click</button><br>
<button onclick="b.click();">Disconnect 5 (before) listeners in one click</button>
</body>
</html>