2017-09-05 4 views
1

J'ai donc un usercript qui analyse la page et crée une boîte de sélection et la remplit avec des options.Comment puis-je appeler une fonction à chaque fois onChange on select est déclenché sur un script d'utilisateur?

Maintenant je veux appeler un script chaque fois que l'utilisateur change l'index sélectionné dans la boîte de sélection. Malheureusement, il semble que l'utilisateur ne s'exécute qu'une seule fois et ne puisse pas lire les changements futurs sur le select.

J'ai essayé:

1)

$('#selectBox').on('change', function() 
{...} 

(exécuter une seule fois)

2) Injecter la fonction "function_to_call" via insertBefore avec <script> tag et le formatage de ma ligne de sélection pour ceci:

<select onChange="function_to_call.call(this,event)">...</select> 

et cela ne fonctionne pas, en disant funct ion_to_call is undefined

3) Cette fonction: https://gist.github.com/nylen/6234717 pour réinjecter ma propre fonction mais tout ce qui est passé sur le paramètre est indéfini.

Est-il même possible pour un userscript d'écouter continuellement des événements ou est-ce seulement une exécution ponctuelle?

+0

Avez-vous une fonction nommée "function_to_call"? – Max

+0

ce sera mieux si vous créez un violon pour cela – Vatsal

Répondre

1
$('#selectBox').on('change', function() 
{...}) 

, la raison pour laquelle cela fonctionne qu'une seule fois est parce que les écouteurs d'événement à un élément dom sera allé une fois editted (par insertBefore changer innerHTML etc)

donc utiliser

$(document).on('change','#selectBox',function() 
{...}) 

Cela fonctionnera

+0

wow, merci! Cela a réglé mon problème. – MDuh

+0

Vous êtes les bienvenus joyeux codage –