2010-12-07 10 views
1

Je veux gérer l'événement de collage après avoir cliqué à droite et sélectionné Coller dans IE. A titre d'exemple, j'ai fait ceci:Comment ajouter l'événement onpaste dans un cadre dans IE avec javascript?

parent.document.frames["myframe"].document.attachEvent('onclick', function(e) { 
     alert("paste"); 
}); 

et cela fonctionne bien. Mais quand j'ajoute 'onpaste' au lieu de 'onclick' ça ne marche pas. J'utilise aussi javascript et pas jquery.

Est-ce que quelqu'un a une idée de comment cela pourrait fonctionner?

Merci

+0

Pour votre information, Opera ne supporte pas 'onpaste' mais supporte' oninput' (qui se déclenche lorsque les pâtes utilisateur, entre autres formes d'entrée). –

Répondre

3

Vous devez associer le gestionnaire d'événements à l'élément <body> plutôt qu'au document, car l'événement paste ne dépassera pas l'élément <body> dans IE. Par exemple:

parent.document.frames["myframe"].document.body.attachEvent('onpaste', function(e) { 
    alert("paste"); 
}); 
+0

J'ai essayé celui-ci mais ne fonctionne toujours pas! – novellino

+0

@novellino: Avez-vous des entrées de texte ou des éléments 'contenteditable' dans le document? Les pâtes ne sont valables que dans de tels éléments. –

+0

Eh bien j'ai un message d'erreur disant que: 'parent.document.frames.myframe.document.body' est null ou n'est pas un objet. Qu'est-ce que ça veut dire? – novellino

2

@novellino car je n'ai pas représentant enought à laisser un commentaire sur la réponse Tims, ont mal à le faire ici. Ce utilise jQuery (lire your comment ressemble vous êtes à l'utiliser de toute façon):

$("#iframeid").contents().find("body").bind('paste', function() { 
    // Your code here... 
}); 

Cela fonctionne dans les deux IE et FF, oh et chrome.

Moi aussi j'utilisais "$(window).bind('paste', function(e){})" Mais comme Tim dit:

"événement paste ne sera pas bouillonner au-delà de l'élément <body> dans IE"

Therfore essayez le code i attaché, ça a marché pour moi.

espoir qui aide ... Al