tinyMCE в AS3 htmlText
Я использую tinyMCE для редактирования / разметки текста в бэкэнде Zend Framework. Я хотел бы использовать сгенерированный HTML в приложении Flash AS3. Проблема в том, что Flash не поддерживает атрибуты в <span>
"S, <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 ответа
Спасибо за ответ, но я нашел очень простое решение. 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. Это можно исправить, отредактировав правило в файлах legacyoutput js (tinymce/plugins/legacyoutput/editor_plugin.js и editor_plugin_src.js):
найдите "forecolor" и измените код на следующий:
forecolor : {inline : 'font', attributes : {color : '%value'}},
Теперь вы можете вывести это в Flash без использования одного хака.
Сначала добавьте следующее в вашу конфигурацию (это должно привести к использованию 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]);
}
}