2010-10-12 5 views
0

Dire que j'ai le code suivant:Création manuelle d'un objet événement javascript

$('#someid').click(function(event) { myFunction(event); }); 

function myFunction(event) 
{ 
    // do something with event 
} 

Et je voudrais tester myFunction() avec une déclaration eval, sans faire quelque chose comme l'utilisation eval('$("#someid").click()');

Existe-t-il un moyen de créer manuellement un objet événement en javascript qui fonctionnerait avec une instruction eval?

De même, si myFunction est uniquement utilisé en tant que gestionnaire d'événements, peut-il toujours supposer que event n'est pas null?

Répondre

2

Eh bien, en supposant que JQuery soit en haut, l'objet événement ne devrait jamais être null. L'objet événement est un critre complètement différent entre IE et tout le monde, donc à moins que JQ 100% ne normalise l'objet (je pense qu'il construit son propre objet événementiel), il peut encore varier dans les propriétés que JQuery ne ne pas utiliser entre les navigateurs. Pour fabriquer votre propre objet événement, je suppose que j'utiliserais simplement une boucle for x pour voir ce qu'il y a à l'intérieur et construire un hachage d'objet qui simule cela.

donc sur cette page quelque chose comme:

$('#adzerk1').click(function(event){ 
    console.log('fakeEvent = {'); 
    for(x in event){ console.log(x + ':' + event[x] + ',\n')} 
    console.log('}'); 
}); 

$('#adzerk1').click(); 

retournera toutes les propriétés et leurs valeurs pour cet événement dans la zone de la console de Firebug. Vous devrez le rendre récursif et tester pour obtenir tous les entrailles des propriétés de l'événement qui sont des objets eux-mêmes, cependant. Sinon, je l'ai mis en place de sorte que tout ce que vous auriez à faire est de couper et coller les résultats dans votre JS, puis supprimez la dernière virgule avant la fermeture bouclier.

+0

Intéressant. Donc, fondamentalement, en utilisant .click() dans mon code de test est probablement la meilleure approche pour définir l'objet événement approprié. – Alan

Questions connexes