À l'intérieur d'une fonction, j'ai un gestionnaire d'événements. Jusqu'ici tout va bien. Mais dans ce gestionnaire d'événements que je veux saisir Entrez pressé et remplacez cela pour un HTML.Le gestionnaire d'événements du navigateur croisé doit capturer [ENTRER]
Je l'ai fait comme ceci:
CrossBrowserEventHandler(Editor, 'keyup', function(Event) { myFunctionRef(idname, Event) });
var myFunctionRef = function myFunction(idname, Event)
{
var keyCode;
if (!Event && window.event) {
Event = window.event;
}
if (Event) {
keyCode = (window.Event) ? Event.which : Event.keyCode;
if (keyCode == 13) {
Event.target.ownerDocument.execCommand("inserthtml",false,'<br />');
Event.returnValue = false;
}
}
PushText(idname); /* pushes the input from a rich text iframe to a textarea */
}
La fonction de gestionnaire d'événements cross navigateur ressemble à ceci:
function CrossBrowserEventHandler(target,eventName,handlerName)
{
if (target.addEventListener) {
target.addEventListener(eventName, handlerName, false);
}
else if (target.attachEvent) {
target.attachEvent("on" + eventName, handlerName);
}
else {
target["on" + eventName] = handlerName;
}
}
Dans la première partie, je capture le code d'activation 13 (retour) et remplacer via une execCommand à un saut de ligne HTML. Il le fait, mais deux fois. Il n'annule/supprime pas l'événement de retour réel.
Des idées (à part le conseil standard d'utiliser un framework JS, ce que je ne peux pas pour de nombreuses raisons, l'une d'elles étant le processus d'apprentissage)?
Dans ce cas, je veux capturer 13, pas 10. –
Peut-être un cas d'événement bouillonnement - j'ai modifié ma réponse. – VinayC
Ne fonctionne pas malheureusement, il passe toujours l'entrée suivie par l'execCommand. Laissez-moi élaborer sur ceci. Il est utilisé pour une fonction de zone de texte enrichi et comme la plupart des navigateurs convertissent un retour en un paragraphe HTML (IE & FF) ou en un saut de ligne inclus dans div, je veux traduire un retour dans un saut de ligne pour l'uniformité. –