размытие и диалог ckeditor - PullRequest
       14

размытие и диалог ckeditor

1 голос
/ 08 апреля 2010

У меня есть функция размытия, прикрепленная к моему ckeditor, вот так

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

ты со мной?

теперь, когда я нажимаю на кнопку флэш-памяти, редактор размывается и вызывает предупреждение.

как мне предотвратить это и при этом вывести предупреждение в другое время, например, когда пользователь покидает область редактирования

еще раз спасибо

Ответы [ 3 ]

6 голосов
/ 02 ноября 2012

Пока мы работаем над взломами, вот что мне нравится использовать для решения этой проблемы. Ключевым моментом является то, что CKE использует iFrames для своих элементов управления раскрывающегося типа (палитры цветов и цвета фона, размера шрифта, типа шрифта)

 editor.on("blur", function(e) {
  if ($(document.activeElement).get(0).tagName.toLowerCase() != "iframe") {
      // your code here for "real" blur event
  }
});
0 голосов
/ 18 января 2011

У меня тоже была эта проблема.

Моим решением было обернуть редактор внутри держателя, назовем его id = "holder" и связать это событие:

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

Позже при событии размытия редактора:

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

Это не лучшее решение, но это хороший обходной путь, который можно использовать. Кажется, что событие размытия редактора привязано к самому редактору. Это означает, что когда область редактирования стирается, происходит событие.

Надеюсь, это поможет любому, у кого есть эта проблема.

0 голосов
/ 09 апреля 2010

Событие размытия срабатывает, когда вы нажимаете на кнопку, похожую на вспышку, после щелчка вверх, когда отображается диалоговое окно. Событие размытия, которое вы хотите включить, происходит сразу после наведения мыши за пределы редактора. Это грязно, но, отслеживая состояние мыши, вы можете достичь своей цели.

$(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");
    });
});
...