as3 htmltextへのティニムス
-
29-09-2019 - |
質問
Tinymceを使用して、Zend Frameworkバックエンドでテキストを編集/マークアップします。 Flash AS3アプリケーションで生成されたHTMLを使用したいと思います。問題は、フラッシュが属性をサポートしないことです <span>
's、 <em>
タグ、 <strong>
タグなど。ここには2つの可能性があると思います。
- Tinymce構成を変更して、スパンの代わりにフォントタグを使用するようにします。
<b>
それ以外の<strong>
,... - FlashのすべてのHTMLタグをRegexに置き換えます。
どんな助けも大歓迎です。
したがって、これはTinymceによって生成された元のHTMLです。
<span style="color:#FF0000; font-size:24;">text, and <strong>bold text</strong></span>
そして、これは私がフラッシュで必要とするものです:
<font size='24' color='#FF0000'>text and <b>bold text</b></font>
解決
返信ありがとうございますが、非常に簡単な解決策を見つけました。 Tinymceには次のようなプラグインが付属しています。 LegacyOutput. 。これにより、Flashで読みやすい古い学校のHTMLコードが生成されます。
これの使用方法:
- 追加 LegacyOutput Tinymce init機能のプラグインに
- 次のルールをTinymce init関数に追加します。extended_valid_elements: 'b、i'
これで、あなたのHTMLは次のようになります:
<font size="12" style="color:#FF0000"><b>text in bold 14pt red</b></font>
スタイル属性は、Flashで読み取り可能にするためのカラー属性に置き換える必要があります。これを修正して、LegacyOutput JSファイル(Tinymce/Plugins/LegacyOutput/Editor_plugin.jsおよびeditor_plugin_src.js)でルールを編集できます。
「予測」を探して、コードを次のように変更します。
forecolor : {inline : 'font', attributes : {color : '%value'}},
これで、これを1回のハックを使用してFlash Witouthで吸収できます。
他のヒント
最初に構成に次のものを追加します(これにより、太字のために強いものではなく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]);
}
}