11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Dans le cadre d'un stage pour mes études, je suis confronté à un problème et je n'arrive pas à trouver de solution.

Objectifs :
La société dans laquelle je travaille est actuellement en train de refondre son site. Un formulaire permet de lancer le téléchargement d'un progiciel. Avant de valider ce formulaire, l'utilisateur doit accepter la licence. Nous affichons donc la licence dans un textarea. Le bouton Submit est désactivé par défaut. Une fois que l'utilisateur à scroller tout le textarea (en supposant qu'il en a profité pour lire la licence Smiley biggrin ), le bouton Submit doit être réactivé.

Réalisation :

Le code HTML associé :

<textarea id="license" name="license" style="font-size:11px; width:100%;" readonly="readonly" onScroll="ScrollLicence();" onMouseOver="init();">
LICENCE D'UTILISATION DU LOGICIEL - version d’évaluation - 
          
... Les différents articles...
</textarea><br /><br />
<input id="accepter" class="inactif" name="submit" type="submit" value="Accepter"  disabled="true" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Annuler" />


Le code javascript :


function init(){
     var textarea= document.getElementById("license");
     textarea.addEventListener('DOMMouseScroll', ScrollLicence, true);
}

function ScrollLicence()
{
    var texta=document.getElementById("license");
    var licenceH=texta.scrollHeight;
    var textareaH=texta.clientHeight;
    var scrollpos=texta.scrollTop;
    
    if(licenceH==(textareaH+scrollpos)){
        document.getElementById("accepter").disabled=false;
        document.getElementById("accepter").className= "actif";
    }
}

La fonction init() permet d'ajouter un événement pour Firefox afin que si l'utilisateur scroll avec la molette de la souris, le bouton soit bien activé arrivé en bas du textarea (Contrairement à IE, Firefox ne gère que l'appuie sur la scrollBar avec l'événement onScroll).

Problèmes :
Le code donné ci-dessus marche pour les différentes versions de IE (IE5.5, IE6, IE7) et Firefox (1.5, 2, 3 BETA).

Mon soucis vient de Opera et Safari (testé sous MS Windows). Il me semble avoir lu que Opera et Safari gérait l'événement onScroll mais pourtant rien de se passe (j'ai testé avec l'activation d'une alert). Peut-être cet événement est limité à la page et non au textarea.

Quoi qu'il en soit je suis ouvert à toute suggestion afin d'atteindre l'objectif.

Si vous avez la solution, un début de solution, voir une piste à me donner pour orienter mes recherches, je vous en serais très reconnaissant.

Merci d'avance.