Я использую древнюю версию tinyMCE уже 10 лет без проблем.majorVersion: «3», minorVersion: «2.7», releaseDate: «2009-09-22» Поскольку проблем не было, и он делал то, что хотел, я никогда не удосужился перейти на более новую версию.Реализация более новой версии потребует изменения каждого скрипта, который использует tinyMCE как минимум для ссылки на новое имя файла tinymce.min.js.Но вдруг я получаю следующие ошибки, когда я вызываю tinMCE.init, и ни одна из текстовых областей не преобразуется.Эти ошибки появляются только в журнале.Попытка / уловка вызова init не сообщает о проблемах.Я был вынужден бросать try / catch вокруг каждого вызова tinyMCE, потому что неудачная инициализация textareas означает, что я должен вернуться к получению значения элементов из атрибута value textarea:
TypeError: r is not a constructor[Learn More] tiny_mce.js:1:118759
init
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:118759
r/<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:118589
loadQueue/<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:84151
allDone
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:84641
loadScripts
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:85295
loadQueue
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:84094
r
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:118551
render
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:118601
init/</<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:111552
each
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:1547
init/<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:111297
g
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:53537
_pageInit/<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:55059
each
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:1547
_pageInit
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:55037
_wait/<
https://localhost/tinymce/jscripts/tiny_mce/tiny_mce.js:1:55590
TypeError: q.getWin(...) is undefined[Learn More] tiny_mce.js:1:127070
Я озадачен, потому что я не изменил ни одну из строк Javascript, которые вызывают tinyMCE.Однако я знаю, что проблема должна быть в моем коде, потому что я получаю одинаковые ошибки в Firefox и Chrome.Например, неизмененный вызов init:
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "spellchecker,advhr,preview",
// Theme options - button# indicates the row# only
theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,fontselect,fontsizeselect,formatselect",
theme_advanced_buttons2 : "cut,copy,paste,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,|,forecolor,backcolor",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
forced_root_block : false,
forced_root_block : false,
content_css : "/styles.css",
onchange_callback : "changeOccupation",
editor_deselector : "mceNoEditor"
});
Я не изменил ни одной строки кода, связанной с tinyMCE.Я не использую никакой другой импортированный код, кроме карт Google, которые я последний раз изменял более месяца назад из-за ужесточения Google условий лицензии.Последнее изменение, которое я внес в свою реализацию перед проблемой, возникшей как в Firefox, так и в Chrome, было изменение в одной из моих личных библиотек, которая отображает диалоги, связанные с вводом географических названий.Библиотека https://www.jamescobban.net/jscripts/locationCommon.js.Расположение этих диалоговых окон контролируется шаблонами HTML в https://www.jamescobban.net/templates/LocationDialogsen.html.. Чтобы упростить добавление этой функции в сценарий PHP на моем сайте, я изменил locationCommon.js, чтобы он добавлял содержимое файла шаблона в тело страницы по документу..body.innerHTML + = text;Вы можете увидеть код, который делает это в верхней части файла locationCommon.js.Это избавляет от необходимости вручную добавлять информацию общего шаблона в каждый скрипт, который вызывает функции в locationCommon.js, а также добавляет поддержку I18N для диалогов.
Я просто не понимаю, почему какие-либо совершенно не связанные изменения явнесение в мою реализацию внезапно приведет к сбою tinyMCE.
К сожалению, все сценарии на моем сайте, которые демонстрируют проблему, требуют, чтобы пользователь вошел в систему как зарегистрированный пользователь и специально получил разрешение на обновление запрошенной записи.,Например, https://www.jamescobban.net/FamilyTree/editEvent.php?idir=117083&rownum=&ider=0&type=30&idet=47. И те сценарии, которые разрешают случайным посетителям вводить данные с использованием tinyMCE, не демонстрируют проблему.Например: https://www.jamescobban.net/BlogPost.php?table=Blogs&blogid=297
Я попытался изменить один из неисправных сценариев, чтобы использовать более свежую версию tinyMCE (4.2.7), но это не удалось, демонстрируя точно причины, по которым я придерживался старой версии, с:
Loading failed for the <script> with source “https://localhost/jscripts /tiny_mce/js/tinymce/themes/advanced/theme.min.js”. editEvent.php:1:1
Loading failed for the <script> with source “https://localhost/jscripts/tiny_mce/js/tinymce/plugins/advhr/plugin.min.js”. editEvent.php:1:1
Failed to load: https://localhost/jscripts/tiny_mce/js/tinymce/themes/advanced/theme.min.js tinymce.min.js:4:3508
Failed to load: https://localhost/jscripts/tiny_mce/js/tinymce/plugins/advhr/plugin.min.js tinymce.min.js:4:3508
TypeError: tinyMCE.get(...) is null[Learn More]
Я отказался от кода, который добавил шаблоны в тело страницы, и подтвердил, что именно это вызвало сбой tinyMCE.Проблема, которая уходит, состоит в том, что мне все еще нужно сделать эти шаблоны доступными для скрипта locationCommon.js.Я не хочу загружать шаблоны как текст, потому что все подпрограммы библиотеки для отображения диалогов ожидают, что шаблон будет HTML.Я попытался загрузить их как XML, но это означает, что я не могу найти шаблоны, используя любой из методов HTML DOM, в частности document.getElementById.Поэтому я должен подключить XML DOM для имитации методов HTML DOM.В частности, код ожидал, что сможет использовать интерфейс для класса HtmlFormElement, включая атрибуты id, name, elements и что каждый из входных элементов в форме доступен как атрибуты элемента формы под значением их имениприписывать.Так что теперь у меня есть целый беспорядок кода, единственная цель которого - обойти тот факт, что tinyMCE откашливает свои куки, если кто-то добавляет текст в раздел body!Я был бы очень признателен, если бы кто-нибудь объяснил мне, почему я должен делать всю эту дополнительную работу.