2010-08-16 2 views
1

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

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

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

так это оригинальный 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> 

ответ

1

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

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

  • добавить legacyoutput ваших плагинов в функции TinyMCE инициализации
  • добавить следующее правило к вашему TinyMCE функции инициализации: extended_valid_elements: «б, я '

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

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

Атрибут стиль должен быть заменен атрибутом цвета, чтобы сделать его доступным для чтения в Flash, Вы можете исправить это путем редактирования правила в legacyoutput файлов (расслоение плотной TinyMCE/плагины/legacyoutput/editor_plugin.js и editor_plugin_src. JS):

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

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

Теперь вы можете Ouput это вспышка witouth с использованием одного хака.

+0

Сохранено мое бекон. –

0

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

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

Вы должны написать собственный плагин с функционалом y, чтобы заменить ваши интервалы (используя 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]); 
    } 
}