Я использую редактор tinymce, чтобы обеспечить расширенное форматирование текста, и наряду с этим я хочу предоставить опцию автосохранения.Мне удалось написать сценарий, который делает именно это, но есть одна проблема.Я не хочу вызывать эту функцию сохранения, если окно не является текущей вкладкой, так что ненужные вызовы сохранения не выполняются.
Чтобы преодолеть это, я использую $(window).focus()
, но это, похоже, не работаетпотому что, когда редактор tinyMCE находится в фокусе (то есть я набираю в нем), каким-то образом окно выходит из фокуса (скорее всего потому, что редактор tinyMCE использует iFrame), и в результате моя функция периодического обновления не вызывается.
Я бы очень легко решил эту проблему, если бы был редактор. onFocus
для редактора, но, похоже, его нет.Кто-нибудь может подсказать мне, как я могу преодолеть эту проблему?Мой код приведен ниже
/* Function to be called for saving the blog */
function saveBlog(){
var ed = tinymce.activeEditor;
/* Ajax call will be done only when some changes has been made in the editor*/
if (ed.isDirty())
{
ed.save();
var link = $(this).attr("href");
var cur_elem = $(this);
cur_elem.html('saving...');
cur_elem.addClass('unclickable');
$.ajax({
type: "POST",
url: link,
data: $("#blog_form :input[name!='csrfmiddlewaretoken']").serialize(),
dataType: 'json',
success: function(){
cur_elem.html('Save');
cur_elem.removeClass('unclickable');
}
});
}
};
var interval_id;
/* Timer resumes when the window comes back in focus */
$(window).focus(function() {
if (!interval_id)
interval_id = setInterval(saveBlog, 5000);
});
/* Whenever window goes out of focus the timer is cleared */
$(window).blur(function() {
clearInterval(interval_id);
interval_id = 0;
});
/* Starts the auto saving for the first time */
$(document).ready(function(){
interval_id = setInterval(saveBlog, 5000);
});
Кто-нибудь может помочь с этой проблемой, мне просто нужно знать, когда экземпляр редактора tinyMCE находится в фокусе, чтобы я мог возобновить функцию периодического автоматического сохранения.Я могу добавить, что в дополнение к $(window).focus