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.
104 lines
3.3 KiB
104 lines
3.3 KiB
2 years ago
|
<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>
|