<script type="text/javascript" src="zones.js"></script>
<script type="text/javascript">
<!--
// exemple d'application
function afficher_etat(id) {
window.document.getElementById('id').value = id;
window.document.getElementById('x').value = x-get_attribut_zone(id,'gauche');
window.document.getElementById('y').value = y-get_attribut_zone(id,'haut');
window.document.getElementById('gauche').value = bouton_souris[0];
window.document.getElementById('milieu').value = bouton_souris[1];
window.document.getElementById('droit').value = bouton_souris[2];
switch( id ) {
case 'En_Haut_A_Gauche' : window.document.body.style.cursor = 'nw-resize'; break;
case 'En_Haut_A_Droite' : window.document.body.style.cursor = 'ne-resize'; break;
case 'En_Bas_A_Gauche' : window.document.body.style.cursor = 'sw-resize'; break;
case 'En_Bas_A_Droite' : window.document.body.style.cursor = 'se-resize'; break;
default : window.document.body.style.cursor = 'default'; break;
}
}
-->
</script>
<!-- exemple d'application -->
<table width="100%" height="100%">
<tr valign="middle">
<td align="center">
Zone traversée : <input type=text id=id readonly /><br />
Position X de la souris dans la-dite zone : <input type=text id=x readonly /><br />
Position Y de la souris dans la-dite zone : <input type=text id=y readonly /><br />
Bouton gauche de la souris enfoncé : <input type=text id=gauche readonly /><br />
Bouton milieu de la souris enfoncé : <input type=text id=milieu readonly /><br />
Bouton droit de la souris enfoncé : <input type=text id=droit readonly /><br />
</td>
</tr>
</table>
<script type="text/javascript">
<!--
var H = window.innerWidth/4;
var V = window.innerHeight/4;
definir_zone( 'En_Haut_A_Gauche', 0, H, 0, V, afficher_etat);
definir_zone( 'En_Haut_A_Droite', H*3, H*4, 0, V, afficher_etat);
definir_zone( 'En_Bas_A_Gauche', 0, H, V*3, V*4, afficher_etat);
definir_zone( 'En_Bas_A_Droite', H*3, H*4, V*3, V*4, afficher_etat);
definir_zone( 'Fenêtre', 0, H*4, 0, V*4, afficher_etat);
-->
</script>
<noscript><a
href="http://www.editeurjavascript.com/">ajax</a><
/noscript>
// Julien Garand le 27 Mars 2005
// Compatibilité : Netscape UNIQUEMENT !!!
//
// Comment ça marche ???? Ben voici ce dont vous avez besoin :
//
// variable globales : 'x' et 'y' -> position courrante de la souris
// 'bouton_souris[0]==true' si le bouton gauche de la souris est enfoncé
// 'bouton_souris[1]==true' si le bouton du milieu est enfoncé
// 'bouton_souris[2]==true' pour le droit
//
// fonctions : definir_zone(id, left, right, top, bottom, func)
// -> id : string identifiant UNIQUE de la zone (!!! pas de vérif !!!)
// -> left,...,bottom : coordonées absolue
// -> func : nom de la fonction appelé ( exemple(id){ /* instructions */ } )
//
// get_attribut_zone(id,attribut) : retourne un attribut de la zone 'id' ou false si pas de zone 'id'
// -> valeur possible de attribut : 'left','gauche' = bord gauche
// 'right','droite' ... etc ...
// 'func','function','fonction' la fonction d'appel
//
// set_attribut_zone(id,attribut,valeur) : Devinnez ;)
//
// Dernière chose : vous définissez les zones dans leur ordre de priorité décroissant (en cas d'enchvevètrement)
// Voili, c'est tout ! Bon code.
if( navigator.appName.substring(0,3)=='Net' ) {
var x;
var y;
var bouton_souris = new Array(false,false,false);
var liste_zones = new Array();
function definir_zone(id,left,right,top,bottom,func) {
liste_zones.push( new Array(id,left,right,top,bottom,func) );
}
function get_attribut_zone(id,attribut) {
for( var i=0; i<liste_zones.length; i++ ) {
if( id==liste_zones[i][0] ) {
switch( attribut ) {
case 'left','gauche' : return(liste_zones[i][1]);
case 'right','droite' : return(liste_zones[i][2]);
case 'top','haut' : return(liste_zones[i][3]);
case 'bottom','bas' : return(liste_zones[i][4]);
case 'func','function','fonction' : return(liste_zones[i][5]);
default : return(false);
}
return(true);
}
}
return(false);
}
function set_attribut_zone(id,attribut,valeur) {
for( var i=0; i<liste_zones.length; i++ ) {
if( id==liste_zones[i][0] ) {
switch( attribut ) {
case 'left','gauche' : liste_zones[i][1] = valeur;
case 'right','droite' : liste_zones[i][2] = valeur;
case 'top','haut' : liste_zones[i][3] = valeur;
case 'bottom','bas' : liste_zones[i][4] = valeur;
case 'func','function','fonction' : liste_zones[i][5] = valeur;
default : return(false);
}
return(true);
}
}
return(false);
}
function tester_zone(appeler_fonction) {
for( var i=0; i<liste_zones.length; i++ ) {
if( (x>=liste_zones[i][1]) && (x<=liste_zones[i][2]) && (y>=liste_zones[i][3]) && (y<=liste_zones[i][4]) ) {
if( appeler_fonction ) {
liste_zones[i][5](liste_zones[i][0]);
}
return(true);
}
}
return(false);
}
function position_souris_Net(e) {
x = e.pageX;
y = e.pageY;
tester_zone(true);
}
function click_souris_Net(e) {
var etat = 'defaut';
var bouton = 'defaut';
if( e.type == 'mousedown' ) {
etat = true;
}
if( e.type == 'mouseup' ) {
etat = false;
}
switch( e.which ) {
case 1: bouton = 0; break;
case 2: bouton = 1; break;
case 3: bouton = 2; break;
}
if( etat!='defaut' && bouton!='defaut' ) {
bouton_souris[bouton] = etat;
}
tester_zone(true);
}
function bloquer_dans_zones() {
if( false!==tester_zone(false) ) {
return(false);
}
return(true);
}
window.document.captureEvents(Event.MOUSEMOVE);
window.document.captureEvents(Event.MOUSEDOWN);
window.document.captureEvents(Event.MOUSEUP);
window.document.onmousedown = click_souris_Net;
window.document.onmouseup = click_souris_Net;
window.document.onmousemove = position_souris_Net;
window.document.oncontextmenu = bloquer_dans_zones;
}