TinyMCE игнорирует параметры инициализации при отправке данных

получил странную проблему здесь с tinyMCE.

Похоже, что у нас есть один или несколько экземпляров tinymce для нескольких текстовых областей на странице. Для этой отладки мы удалили все экземпляры, кроме одного, чтобы их не путать, и проблема все еще сохраняется.

Проблема в том, что когда вы загружаете страницу, конфигурация загружается правильно, и я вижу это в отладчике, когда мы проверяем verify_html, для него установлено значение false, как и ожидалось в конфигурации. Однако, когда вы используете кнопку «редактировать источник html», вводите некоторые образцы данных и нажимаете «Обновить», некоторые теги удаляются.

Мы используем последнюю версию tinymce (3.5.8), я сравнил используемую нами версию с той, которую вы можете скачать, и она идентична.

До сих пор я обнаружил, что когда вы инициализируете tinymce и он доходит до строки 1964 (после использования js beautifier для отладки), он делает это A = A || {}; Таким образом, при начальной инициализации мы получаем правильный объект параметров для A. Где все параметры конфигурации, которые мы установили, соответствуют ожиданиям, а для параметра verify_html установлено значение false. Что, в свою очередь, устанавливает valid_elements для разрешения всего.

if (A.verify_html === false) {
            A.valid_elements = "*[*]"

Это отлично работает, однако, когда мы вводим какой-либо html и нажимаем «Обновить», когда мы приходим к этой строке, объект A пуст и не содержит никаких параметров, которые мы установили. Это означает, что некоторые html анализируются. Кто-нибудь сталкивался с этой проблемой в прошлом?

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

Для трассировки стека вот трассировка во время инициализации:

f.html.Schema (tiny_mce.js:1964)
k.create.initContentBody (tiny_mce.js:9863)
k.create.init (tiny_mce.js:9832)
k.create.render (tiny_mce.js:9666)
a.dom.ScriptLoader.loadScripts.d.length (tiny_mce.js:7221)
c.each (tiny_mce.js:110)
a.dom.ScriptLoader.loadScripts.o (tiny_mce.js:7220)
a.dom.ScriptLoader.loadScripts.d.length (tiny_mce.js:7215)
p (tiny_mce.js:7117)

И трассировка стека во время обновления текста

f.html.Schema (tiny_mce.js:1964)
a.html.Serializer (tiny_mce.js:3358)
u (editor_plugin.js:1)
tinymce.create.objectToImg (editor_plugin.js:1)
tinymce.create.init.n.onPreInit.add.n.serializer.addNodeFilter.v (editor_plugin.js:1)
b.html.DomParser.f.parse (tiny_mce.js:3174)
k.create.setContent (tiny_mce.js:10372)
saveContent (source_editor.js:5)
onsubmit (source_editor.htm:33)

конфигурация инициализации:

tinyMCE.init({

    mode : "specific_textareas",
    editor_selector : "editorunfiltered",

    dialog_type                       : "modal",

    urlconvertor_callback :         "myURLConvertor",
    setup : function(ed) {
        ed.onPreProcess.add(function(ed, o) {
            if (o.node.nodeName.toLowerCase() == "body")
                o.getInner = true;
        });
    },
    verify_html : false,
    relative_urls : false
});

Код, который я пытаюсь отправить в tinymce:

<object classid="clsid:D27CDB6E-AAAA-1111-2222-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="391" height="600">
    <param name="movie" value="/imapbuilder/loader.swf" />
    <param name="base" value="/imapbuilder/" />
    <param name="flashvars" value="datasource=ambassadors.xml" />
    <param name="loop" value="false" />
    <param name="menu" value="true" />
    <param name="quality" value="best" />
    <param name="wmode" value="transparent" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowScriptAccess" value="always" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="/imapbuilder/loader.swf" width="391" height="600">
      <param name="movie" value="/imapbuilder/loader.swf" />
      <param name="base" value="/imapbuilder/" />
      <param name="flashvars" value="datasource=ambassadors.xml" />
      <param name="loop" value="false" />
      <param name="menu" value="true" />
      <param name="quality" value="best" />
      <param name="wmode" value="transparent" />
      <param name="bgcolor" value="#ffffff" />
      <param name="allowScriptAccess" value="always" />
    <!--<![endif]--><!--[if !IE]>-->
    </object>
<!--<![endif]-->
</object>

person OwlPaste    schedule 04.02.2013    source источник


Ответы (1)


Параметр verify_html более недоступен, начиная с версии 3.3. Вам придется использовать параметры valid_elements и valid_children, чтобы определить, какой HTML-код является допустимым, а какой нет.

person Thariama    schedule 04.02.2013
comment
Уверены ли вы? Это и в коде, и в конфиге для tinymce. tinymce.com/wiki.php/Configuration:verify_html У нас определенно есть последняя версия. Во всяком случае, я тоже пытался передать valid_elements, это не дало никакого эффекта. Если возможно, мне укажут на функцию, которая занимается разбором html, чтобы я мог просмотреть ее и узнать больше? Я немного потерялся относительно того, где он находится. Кстати спасибо за ответ - person OwlPaste; 04.02.2013
comment
он указан, но не работает с версии 3.3 - person Thariama; 04.02.2013
comment
О, я вижу, я использовал valid_elements раньше, как с [], так и с использованием стандартных и полных наборов правил xhtml, которые перечислены в руководстве, но безрезультатно. Отредактировал исходный пост, включив в него код, который я пытаюсь вставить. Отфильтровываются атрибуты classid и codebase. Любые идеи, которые я могу попытаться отладить эту проблему дальше? @Thariama Кстати, спасибо за ответы! - person OwlPaste; 05.02.2013
comment
valid_elements = [] не работает из-за ошибки. Вы можете создать скрипку tinymce? fiddle.tinymce.com/ - person Thariama; 05.02.2013
comment
Fiddle Так что это в значительной степени по умолчанию, с использованием набора правил по умолчанию, который содержит атрибуты classid и codebase элемента объекта. . Из того, что я наработал с valid_children, я добавил объект. Когда вы вставляете приведенный выше код, он по-прежнему анализирует как кодовую базу, так и classid из объекта. - person OwlPaste; 05.02.2013
comment
Сам не разобрался, хотя сделанные мной настройки не сработали. Я разместил вопрос на форуме tinymce - посмотрим, что они ответят. - person Thariama; 05.02.2013