Bonjour ,

J'essaye de développer un widget qui affichera des éléments mobiles ,
Pour ça je compte utiliser window.setTimeout ,
Malheureusement tous mes essais afin de mettre en action le windows.setTimeout dans le widget ont été infructueux ,

Le but pour moi est de pouvoir activer le mécanisme du widget puis de régulièrement renvoyer un callback à l'appelant

Voici ci-dessous un exemple basique de ce que j'essaye de faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<!-- Date de création: 27/10/2010 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.4.custom.min.js"></script>
<script type="text/javascript">
(function( $ ) {
var idTimer,
seuilMs=new Date().getTime();
$.widget( "flc.widgetTest", {
/*----------------------------*/
   options:{ecart:2000,rate:25},
/*----------------------------*/
	_create: function() {
	seuilMs=new Date().getTime()+this.options.ecart;
	this._horloge();
	},
/*----------------------------*/
	_horloge: function()
		{
		getMs=new Date().getTime();
		this.element.text(getMs+' - '+this.options.ecart+' '+seuilMs); /* hisoire d'afficher quelque chose */
		if (getMs>seuilMs)
			{ 
			seuilMs=getMs+this.options.ecart;
			this._trigger("complete",null,1);
			}
		/* ici problème	avec 
		window.setTimeout(function(){this._horloge()},this.options.rate);
		ou
		window.setTimeout("this._horloge()",this.options.rate);
		ou
		window.setTimeout("_horloge()",this.options.rate);
		*/
		idTimer=window.setTimeout(function(){this._horloge()},this.options.rate);	
		}
});
 
 
})( jQuery );
 
</script>
 
<script type="text/javascript">
$(document).ready(function(){
var v1=0;
$('#test').widgetTest({ecart:1500,rate:10},function(){
	$('#db0').html(v1++);
	});
 
});
</script>
</head>
<body>
<div id="test"></div>
<div id="db0"></div>
</body>
</html>

Merci par avance pour vos conseils ,pistes ,suggestions etc … sur la façon de procéder