تعرض خطوط الخطوط في محرر Tinymce خطًا إضافيًا على المعاينة ، وليس في التعليمات البرمجية
سؤال
أنا أستخدم المكون الإضافي لـ BBCode مع Tinymce وأرى أن فواصل الخط لا تظهر نفس الشيء بين المعاينة ورمز HTML.
لدي الأسطر التالية في نافذة المحرر:
This is line one
This is line three
السطر الثاني فارغ. عندما أشاهد هذا في HTML أحصل على ما يلي.
This is line one
This is line three
بدون خط فارغ إضافي.
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "bbcode",
entity_encoding : "raw",
remove_linebreaks : false,
force_p_newlines : false,
force_br_newlines : true,
forced_root_block : ''
});
ماذا ينقصني؟
المحلول
لقد اختبرته على صفحة الاختبار الخاصة بي مع Firefox 3.5.7 و Google Chrome 4.0.223.11.
لغة البرمجة:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "bbcode",
content_css : "bbcode.css",
entity_encoding : "raw",
add_unload_trigger : false,
remove_linebreaks : false,
apply_source_formatting : false
});
يمكن إزالة المسافة بين الفقرات باستخدام CSS بسيط ("BBCode.css") مثل هذا:
p {margin:0; padding: 0;}
نصائح أخرى
ربما تحتاج إلى استخدم ال nl2br()
وظيفة لإخراج رمز HTML الخاص بك:
NL2BR - إدراج انقطاع خط HTML أمام جميع الخطوط الجديدة في سلسلة
بدلاً من ذلك ، يمكنك تعيين ملف force_p_newlines
خيار ل true
.
لقد اختبرته وأنت على حق ولكن السلوك يحدث فقط مع المكون الإضافي لـ BBCode. أعتقد ذلك باستخدام preformatted : true
الخيار في tinyMCE.init
يجب أن تكون قادرًا على حل مشكلتك.
إليك طريقة أخرى للقيام بذلك. ما عليك سوى تغيير سلوك Enter and Shift+Enter.
ed.onKeyPress.add(
function (ed, evt) {
if(evt.shiftKey && evt.keyCode == 13) {
tinyMCE.execCommand('mceInsertContent', false, '<br><br>');
tinymce.dom.Event.cancel(evt);
//alert('shift enter key');
return;
}
if(evt.keyCode == 13 && !evt.shiftKey) {
tinyMCE.execCommand('mceInsertContent', false, '<br>');
tinymce.dom.Event.cancel(evt);
//alert('enter key');
return;
}
});
من تكوين Tinymce ، يمكنك اختيار Beavhior من الخطوط الجديدة
http://www.tinymce.com/wiki.php/configuration3x:force_br_newlines
ستجبر Tinymce عناصر BR على الخطوط الجديدة بدلاً من إدراج الفقرات
tinyMCE.init({
...
force_br_newlines : true,
force_p_newlines : false,
forced_root_block : '' // Needed for 3.x
});
لمعلوماتك - على الرغم من الدراما السياسية من حولها كونها "الشيء الصحيح الذي يجب القيام به" للاستخدام <p>
العلامات ولا تستخدم <br>
العلامات ، كانت المشكلة بالنسبة لي أنني كنت أرسل محتوى في رسائل البريد الإلكتروني - وفي رسائل البريد الإلكتروني ، ليس لدي سيطرة على CSS على <p>
العلامات (ما لم أرغب في إضافة CSS inline إلى كل علامة). لذلك <p>
كانت العلامات تضيف ما ظهر مثل تباعد الخط المزدوج للمستخدمين النهائيين. لقد أضفت CSS على موقعي لإزالة التباعد وبدا المحتوى جيدًا هناك.
لذلك بعد استخدام <br>
العلامات ، ثم الذهاب إلى "الطريق الصحيح" مع <p>
, ، سأعود إلى الاستخدام <br>
العلامات مرة أخرى ...
حاول إضافة كائن التكوين
valid_elements: 'br' //and any others that you want
لدي نفس المشكلة. هذا هو الحل لمكوّن الإضافات BBCode:
forced_root_block : false,
remove_redundant_brs : false,
valid_elements: "br",
verify_html : false,
مع Tinymce 4 لدي نفس المشكلة ولكن بالنسبة لي أعمل هذا التكوين
mode: 'exact',
inline: true,
add_unload_trigger: false,
schema:"html5",
invalid_elements: "span",
extended_valid_elements : "span[!class]",
paste_remove_styles: true,
forced_root_block : false,
verify_html : false,
cleanup : true