Я осмотрел форум, но, может казаться, не нахожу определенное решение этой проблемы...
Я использую jQuery и TinyMCE на нашем веб-сайте. Я прошел документы TinyMCE, но все еще теряюсь, я боюсь. Мы делаем интерфейс, который требует редактирования на месте в нескольких местах на странице. Единственная вещь, каждый из них будет иметь весь выбор редактирования от TinyMCE на одной панели инструментов наверху. Так, для резюме его он - несколько редакторов (что у каждого нет собственных панелей инструментов, просто место, чтобы отредактировать или выбрать текст), и только одна панель инструментов в верхней части страницы для управления, какой бы ни текстовое поле активно в то время.
Как это могло быть достигнуто? Это даже возможно? Любая справка, любое нажатие в правильном направлении, любые подсказки/подсказки/знание вообще на этой проблеме были бы большой, большой справкой.
Спасибо, James
Я знаю, что есть способ показать панель инструментов, когда сфокусировано текстовое поле, а затем скрыть событие размытия текстового поля - так что это может быть один маршрут.
Я делаю похожие вещи (с несколькими текстовыми полями), когда загружаю по запросу tinyMCE, так что что-то вроде загрузки по запросу и последующего уничтожения по завершении с (событие размытия) может быть тем, что вам нужно.
Я не могу дать вам весь свой код, поскольку он на самом деле является частью I.P. моего работодателя, но вот его приблизительный набросок, который, надеюсь, поможет. TinyMCE_GZ является частью gzip, который находится за пределами сайта tinyMCE.
isTinyMCE_Loaded = false;
jQuery('.my-textarea').one("click", function(){
BuildWYSIWYG.Full(jQuery(this));
})
BuildWYSIWYG.OnDemand: function(callback){
tinyMCE_GZ.init({
plugins : 'style,table,advhr,advimage,advlink,insertdatetime,preview,searchreplace,contextmenu,paste,fullscreen,visualchars,nonbreaking,xhtmlxtras,safari,tinybrowser',
themes : 'simple,advanced',
languages : 'en',
disk_cache : true,
debug : false
}, function(){
isTinyMCE_Loaded = true;
callback();
});
};
BuildWYSIWYG.Full: function(el){
settings.elements = jQuery(el).attr("id");
// Build advanced wysiwyg
if (isTinyMCE_Loaded){
tinyMCE.init(settings);
} else {
BuildWYSIWYG.OnDemand(function(){
tinyMCE.init(settings);
});
}
}
Может быть и другой выход. Взгляните на этот пример. http://tinymce.moxiecode.com/examples/example_23.php
Вы можете использовать ссылки внизу (Показать, Скрыть, Полужирный, Получить содержимое и т. Д.) В качестве меню (может потребоваться некоторый стиль). Затем получите идентификатор текстового поля, которое в настоящее время находится в фокусе, и передайте его в меню (#current) и используйте его для изменения этого текстового поля.
Чтобы достичь того, что вы описываете:
Теперь для некоторого кода (может потребоваться некоторая отладка ...)
Сначала инициализируйте TinyMCE и отключите меню.
tinyMCE configs
({
mode : "textareas",
theme : "advanced",
editor_selector : "editable"
theme_advanced_buttons1 : "",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "botton",
theme_advanced_statusbar_location : "bottom" });
Думаю, вы также можете отредактировать функцию _addToolbars в tiny_mce / themes / advanced / editor_template_src.js, а затем упаковать ее.
Затем определите текстовую область, которая в данный момент находится в фокусе, используя jQuery bind:
$().ready(function() {
var current;
$('.editable').focus(
current = this.id;
);
$('.editable').blur(
//maybe hide the menu (?)
);
}
Затем создайте HTML с нашими текстовыми полями и меню
<form method="post" action="somepage">
<div id="independent_menu">
<!-- The Menu, Please Style Accordingly -->
<a href="javascript:;" onmousedown="$('#current').tinymce().show();">[Show]</a>
<a href="javascript:;" onmousedown="$('#current').tinymce().hide();">[Hide]</a>
<a href="javascript:;" onmousedown="$('#current').tinymce().execCommand('Bold');">[Bold]</a>
<a href="javascript:;" onmousedown="alert($('#current').html());">[Get contents]</a>
<a href="javascript:;" onmousedown="alert($('#current').tinymce().selection.getContent());">[Get selected HTML]</a>
<a href="javascript:;" onmousedown="alert($('#current').tinymce().selection.getContent({format : 'text'}));">[Get selected text]</a>
<a href="javascript:;" onmousedown="alert($('#current').tinymce().selection.getNode().nodeName);">[Get selected element]</a>
<a href="javascript:;" onmousedown="$('#current').tinymce().execCommand('mceInsertContent',false,'<b>Hello world!!</b>');">[Insert HTML]</a>
<a href="javascript:;" onmousedown="$('#current').tinymce().execCommand('mceReplaceContent',false,'<b>{$selection}</b>');">[Replace selection]</a>
</div>
<!-- The Text Areas -->
<textarea class="editable" id="one">Some Text Here</textarea>
<textarea class="editable" id="two">Yet another text area</textarea>
<textarea class="editable" id="three">Final Text Area</textarea>