2010-04-08 5 views
1

j'ai ckeditor une fonction de flou attaché à mon ckeditor comme siflou et le dialogue

editor = CKEDITOR.instances.fck; 
editor.on("blur",function(e){ 
    alert("hello"); 
}); 

vous avec moi? Maintenant, lorsque je clique sur le bouton flash, l'éditeur devient flou et provoque l'affichage de l'alerte.

comment j'arrêter que cela se produise et encore obtenir l'alerte à apparaître d'autres moments comme lorsque l'utilisateur quitte la zone de l'éditeur

merci encore

Répondre

0

L'événement de flou est mise à feu lorsque vous cliquez sur un bouton comme clignote après le clic vers le haut lorsque la boîte de dialogue est présentée. L'événement de flou que vous voulez activer se produit juste après la souris en dehors de l'éditeur. C'est sale mais en suivant l'état de la souris, vous pouvez atteindre votre objectif.

$(function() { 
    var mouseState = 0; 
    $(document).mousedown(function(){ mouseState = 1; }); 
    $(document).mouseup( function(){ mouseState = 0; }); 

    var editor = CKEDITOR.instances.editor1; 
    editor.on("blur", function(e) { 
     if (mouseState == 1) console.log("blur"); 
    }); 
}); 
0

J'ai aussi eu ce problème maintenant.

Ma solution a été d'envelopper l'éditeur dans un support, nous allons l'appeler id = « support », et de lier cet événement:

var isMouseOverEditor = false; 
$('#holder').hover(function(){ 
    isMouseOverEditor = (e.type=='mouseenter' ? true : false); 
}); 

plus tard à l'événement on flou de l'éditeur:

editor.on("blur", function(e) { 
    if (!isMouseOverEditor) return; 
    // your code here for "real" blur event 
}); 

Ce n'est pas la meilleure solution, mais c'est une bonne solution de contournement qui peut être utilisée. Il semble que l'événement de flou de l'éditeur soit lié à l'éditeur lui-même. Cela signifie que lorsque la zone d'édition est estompée, l'événement est déclenché.

Espérons que cela aidera n'importe qui a ce problème.

6

Tant que nous travaillons sur les hacks, voici ce que j'aime utiliser pour résoudre ce problème. La clé est que CKE utilise des iFrames pour leurs contrôles de type déroulant (sélecteur de couleur et couleur d'arrière-plan, taille de la police, type de police)

editor.on("blur", function(e) { 
    if ($(document.activeElement).get(0).tagName.toLowerCase() != "iframe") { 
     // your code here for "real" blur event 
    } 
});