tinymce إلى AS3 htmltext
-
29-09-2019 - |
سؤال
أنا أستخدم Tinymce لتحرير/ترميز النص في الواجهة الخلفية لـ Zend Framework. أرغب في استخدام HTML الذي تم إنشاؤه في تطبيق Flash AS3. المشكلة هي أن الفلاش لا يدعم السمات في <span>
'س، <em>
العلامات ، <strong>
العلامات وما إلى ذلك أعتقد أن هناك احتمالان هنا:
- قم بتغيير تكوين Tinymce بحيث يستخدم علامات الخطوط بدلاً من Span's ،
<b>
بدلاً من<strong>
,... - استبدل جميع علامات HTML في فلاش مع Regex.
أي مساعدة سيكون موضع ترحيب.
لذلك هذا هو HTML الأصلي الذي تم إنشاؤه بواسطة Tinymce:
<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. سيؤدي ذلك إلى إنشاء رمز HTML في المدرسة القديمة القابلة للقراءة في Flash.
كيف يستعمل هذا:
- يضيف LegacyOutput إلى الإضافات الخاصة بك في وظيفة init tinymce
- أضف القاعدة التالية إلى وظيفة init tinymce:extended_valid_elements: 'b ، i'
الآن سيبدو HTML الخاص بك هكذا:
<font size="12" style="color:#FF0000"><b>text in bold 14pt red</b></font>
يجب استبدال سمة النمط بسمة ملونة لجعلها قابلة للقراءة في Flash ، يمكنك إصلاح ذلك عن طريق تحرير قاعدة في ملفات JS LegacyOutput (Tinymce/Plugins/LegacyOutput/Editor_Plugin.js و Editor_Plugin_Src.js):
ابحث عن "التنبؤ" وقم بتغيير الرمز إلى ما يلي:
forecolor : {inline : 'font', attributes : {color : '%value'}},
الآن يمكنك ouput هذا في Flash Witouth باستخدام اختراق واحد.
نصائح أخرى
أضف أولاً ما يلي إلى التكوين الخاص بك (يجب أن يؤدي هذا إلى استخدام علامات B بدلاً من قوي لـ Bold):
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]);
}
}