tinyMCE в AS3 htmlText - PullRequest
       9

tinyMCE в AS3 htmlText

1 голос
/ 16 августа 2010

Я использую tinyMCE для редактирования / разметки текста в бэкенде Zend Framework.Я хотел бы использовать сгенерированный HTML в приложении Flash AS3.Проблема в том, что Flash не поддерживает атрибуты в <span>, <em> тегах, <strong> тегах и т. Д. Я предполагаю, что здесь есть две возможности:

  • изменить конфигурацию tinyMCE такон использует шрифтовые теги вместо span, <b> вместо <strong>, ...
  • Замените все HTML-теги во Flash на Regex.

Любая помощь будетбудьте добры.

, так что это оригинальный HTML, сгенерированный tinyMCE:

<span style="color:#FF0000; font-size:24;">text, and <strong>bold text</strong></span>

И это то, что мне нужно во Flash:

<font size='24' color='#FF0000'>text and <b>bold text</b></font> 

Ответы [ 2 ]

1 голос
/ 30 августа 2010

Спасибо за ответ, но я нашел очень простое решение. TinyMCE поставляется с плагином под названием: legacyoutput . Это сгенерирует HTML-код старой школы, который будет читаться во Flash.

как это использовать:

  • добавьте legacyoutput в ваши плагины в функция инициализации tinyMCE
  • добавьте следующее правило к вашему Функция инициализации tinyMCE: extended_valid_elements: 'b, i'

Теперь ваш HTML будет выглядеть так:

<font size="12" style="color:#FF0000"><b>text in bold 14pt red</b></font>

Атрибут style должен быть заменен атрибутом color, чтобы сделать его читаемым во Flash Это можно исправить, отредактировав правило в js-файлах legacyoutput (tinymce / plugins / legacyoutput / editor_plugin.js и editor_plugin_src.js):

найдите «forecolor» и измените код на следующий:

forecolor : {inline : 'font', attributes : {color : '%value'}},

Теперь вы можете вывести это во Flash без использования одного хака.

0 голосов
/ 17 августа 2010

Сначала добавьте следующее в вашу конфигурацию (это должно привести к использованию b-тегов вместо сильных для жирного):

tinyMCE.init({
    ...
    formats : {
          ...
      bold : {inline : 'b'},
          ...
});

Вы должны написать собственный плагин с функциональностью для замены ваших пролетов (используя jQuery). Соответствующий код должен выглядеть примерно так:

iframe_id = (ed.id == 'content_ifr') ? ed.id : ed.id+'_ifr';
spans = document.getElementById(iframe_id).document.getElementsByTagName('span');

for (i=0;i<spans.length;i++){

  with(document.getElementById(iframe_id).contentWindow){

    var font=document.createElement("font");
    font.innerHTML = span[i].innerHTML;
    font.size = $(span[i]).attr('font-size');
    font.color = $(span[i]).attr('color');
    span[i].parentNode.replaceChild(font, span[i]);
  }
}
...