Я использовал крошечный mce (версия 3.2.6) довольно долго (без каких-либо проблем), но хотел обновить его до более новой версии (3.4.2). Причиной обновления стали некоторые проблемы со сторонним плагином (spellchecker) - после попытки с более новой версией эти проблемы были исправлены и в env разработчиков. все работало нормально.
Проблема возникла в live env (после доставки новой версии приложения клиенту), на стороне клиента вы можете подключиться к приложению (используя крошечный mce) двумя способами:
(1) введите адрес (так нормальный способ, все работает нормально)
(2) с помощью какого-то клиентского приложения для портала, которое изменяет URL-адреса по неизвестным мне причинам, - так Tiny mce перестал работать после обновления до (3.4.2). (Я дважды проверил, и это связано только с крошечным обновлением версии mce, а не с плагинами или другими проблемами).
Способ, которым портал клиентов преобразует URL, выглядит следующим образом:
неконвертированный URL:
http://server.address/blabla/js/jsFileName.js?v=123
конвертированный URL (взят из скрипача):
https://client.portal.com/http://server.address/blabla/js/jsFileName.js?v=123&psScriptReferrer=http://server.address/blabla/
Как я уже говорил, «старая» версия (3.2.6) работала нормально (даже с этими магически преобразованными URL-адресами), возникла проблема после обновления крошечного mce (без изменений конфигурации или чего-либо еще). Я получаю ошибку:
q is not a constructor
https://client.portal.com/http://server.address/blabla/js/tiny_mce/tiny_mce.js?v=123&psScriptReferrer=http://server.address/blabla/
Line 1
(function(d){var a=/^\s*|\s*$/g,e,c="B...{a.selection.onSetContent.add(f)})}});
Я получаю это сообщение об ошибке во всех браузерах (проверено: IE6 / IE8 / FF3.6). Это также приводит к тому, что крошечный mce не загружается (отображается только текстовый ввод 'plain-html').
Я предполагаю, что в новую версию включено несколько регулярных выражений, а магически преобразованная ссылка содержит более одной строки 'http'.
Я попробовал некоторые изменения для следующих параметров (установив их в 0) - не повезло
convert_urls: 1,
относительные_урлы: 1,
remove_script_host: 1
это еще один «многообещающий» параметр:
document_base_url: tinymce.documentBaseURL
но так как это приложение должно работать двумя способами, описанными выше (1) и (2), я не могу просто жестко закодировать ссылку там (также это звучит как очень хрупкое решение).
Я не могу на 100% сказать, что это ошибка в tinymce, потому что при использовании «нормального» адреса все работает нормально. С другой стороны, я ничего не могу сделать с этим преобразованием URL.
<script type="text/javascript">
tinyMCE.init({
mode : "exact",
elements : "content, contentFr",
theme : "advanced",
plugins : "spellchecker",
spellchecker_languages : "+English=en_CA,French=fr",
spellchecker_rpc_url : "jmyspell-spellchecker",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,fontselect,fontsizeselect,|,forecolor,backcolor,sub,sup",
theme_advanced_buttons2 : "link,unlink,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,code,|,spellchecker",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
theme_advanced_resize_horizontal : 0,
theme_advanced_path: false,
content_css : "css/tinyMCE_custom.css",
oninit: function(){
tinyMCE.get('content').setContent('some text here');
tinyMCE.get('contentFr').setContent('some different text here');
}
});
</script>
Спасибо за любую помощь / подсказки.
С уважением,
Peter