2010-04-26 2 views
0

J'écris un simple éditeur dans un iframe, mais ayant du mal à enregistrer l'événement « oninput » pour détecter lorsque l'utilisateur modifie le champ de texte tel que le collage des données etc.éditeur simple iframe et oninput événement

var txtArea = 
    document.getElementById('txtArea'); 
    txtArea.contentWindow.document.designMode="on"; 
    txtArea.contentWindow.document.open(); 
    txtArea.contentWindow.document.write("<head><style 
    type='text/css'>body{font-size:13px;}</style></head><body>"+data.document+"</body>"); 
    txtArea.contentWindow.document.close(); 


    $([txtArea.contentWindow.document]).bind("click", 
    updateCaretPosMouse); //fires 
    $([txtArea.contentWindow.document]).bind("keyup", 
    updateCaretPosKeyboard); //fires 
    $([txtArea.contentWindow.document]).bind("input", 
    textChanged); //doesn't fire 

Si je crée un élément textarea simple et que j'y ajoute l'événement "input", alors cela fonctionne. Est-ce que les événements « d'entrée » fonctionnent pas avec les zones de texte iframe?

Répondre

1

oninput n'est pas un événement DOM officiel, il semble être une extension spécifique Mozilla (source). Ne sera pas keyup faire l'affaire?

+1

non, je dois détecter les événements coller. –

+0

Cet événement s semble être nouveau dans la spécification HTML5, mais Firefox et Chome le supportent déjà. http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#common-event-behaviors –

+0

@teehoo il est bien possible que IE8 ne le fasse pas (et assez sûr que IE6 et IE7 ne le font pas). Mais pour détecter les événements de collage, je me souviens qu'il y a eu d'excellentes discussions à ce sujet sur le SO. Je ne peux pas faire la recherche en ce moment (besoin de retourner au travail), mais une recherche de "détecter coller javascript" pourrait faire l'affaire. –

0

Essayez d'utiliser l'événement de changement?