0

J'essaie d'envoyer le document et le contrôle que la touche a été enfoncée dans la fonction enfoncée.Existe-t-il un moyen de transmettre une variable à une fonction enfoncée?

Voici mon code:

//Namespace 
MyExt.BrowserOverlay = { 
    init: function() { 
     var appcontent = document.getElementById("appcontent"); // browser 
     if(appcontent) 
       appcontent.addEventListener("DOMContentLoaded", MyExt.BrowserOverlay.onPageLoad, true); 
    }, 

    onPageLoad: function(aEvent) { 
       var doc = aEvent.originalTarget; 
       if (doc.location.href == "http://something.com"){ 
        var txtBox = doc.getElementById('txtBox'); 
         txtBox.addEventListener('keypress', keypressed, false); //Error Line 
           } 
       }, 

...

quelque chose comme:


txtBox.addEventListener('keypress', keypressed(?,doc), false); 

function keypressed(a,doc){ 
    alert(a); //a relates to keypress 
    alert(doc.innerHTML); 
} 

Répondre

0

manière la plus simple de passer la variable est de l'attacher à l'élément qui déclenchera l'événement, mais vous pouvez accéder au document en utilisant la variable globale document.

Quant aux écouteurs d'événements, les navigateurs gérer les événements différemment:

txtBox.someVar = "foobar"; // Any variable you want to pass 

if(window.addEventListener){ // Firefox, Chrome... 
txtBox.addEventListener('keypress', keypressed, false); 
} else { // IE 
txtBox.attachEvent('onkeypress', keypressed); 
} 

 

function keypressed(event){ 

// find event object 
var e = event || window.event; 

// find target object 
var target = e.currentTarget; 
if (e.target) target = e.target; 
else if (e.srcElement) target = e.srcElement; 
if (target.nodeType == 3) target = targ.parentNode; 

// find key code 
var code = e.charCode || e.keyCode; 

alert(String.fromCharCode(code)); 
alert(target.someVar); 
alert(document.body.innerHTML); 

} 
+0

(document) ne fonctionnera pas dans ce cas car plusieurs onglets sont ouverts, et éventuellement les mêmes pages et éléments. Je ne veux pas tous les modifier seulement celui qui a créé l'événement. Pouvez-vous retourner le document du contrôle qui s'y trouve? Malheureusement, une variable globale pourrait être ma seule solution. – Anon

+0

Si vous avez une variable 'doc', passez-la comme si j'avais passé' someVar'. – draganHR

+0

doc n'est pas un global qui peut être utilisé en dehors de la fonction onPageLoad, et keypressed est une fonction privée en dehors de l'espace de noms MyExt.Browseroverlay. var cible = e.currentTarget; // Renvoie le contrôle et non le document. J'essaie d'obtenir les deux. – Anon

0

Vous pouvez utiliser gBrowser.contentDocument pour obtenir le document de l'onglet sélectionné . Voir ce article sur le contrôle du navigateur à onglets pour plus d'informations.

Questions connexes