إذا قمت بلصق بعض كود HTML في موضوع لإنشائه، يقوم Discourse بإعادة تنسيق HTML تلقائيًا (أي “يطهيه”)، مع الاحتفاظ ببعض (وليس كل) التنسيق الأساسي، وإزالة وسوم HTML من العرض.
هل توجد طريقة لاستعادة كود HTML الأصلي الذي قمت بلصقه في الموضوع عند إنشائه؟ أقرب ما أجد هو إجراء استدعاء API باستخدام “raw=true” في نقطة النهاية ورؤية الاستجابة تحت response.data.post_stream.posts[0].raw، كما هو موضح هنا.
ومع ذلك، فإن النص “الخام” الذي يعود ليس هو كود HTML الأصلي. لست متأكدًا مما هو بالضبط — يبدو وكأنه الموضوع المطبوخ الأساسي بعد إزالة جميع المسافات.
هل توجد طريقة لاستعادة كود HTML الأصلي الذي قمت بلصقه؟
شكرًا لك، لكن يبدو أن هذا لا يعمل بالنسبة لي. أود استعادة البيانات التي تحافظ على تنسيق HTML الأصلي تمامًا كما كان عند لصقه لأول مرة—فإذا احتوى HTML الأصلي على وسم div، على سبيل المثال، أريد أن يحتوي البيانات المسترجعة على ذلك الوسم.
ما وجدته في استجابة “raw”، على سبيل المثال، يحتوي على تنسيق Markdown بينما لم يكن هناك أي تنسيق في البيانات الأصلية.
كتبتُ بضعة أسطر بتنسيقات مختلفة في معالج نصوص، وكان كود HTML الناتج هو:
كود HTML الأصلي:
<style>
...
/* تعريفات الأنماط */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
</head>
<body lang=EN-US style='tab-interval:.5in;word-wrap:break-word'>
<!--StartFragment-->
<p class=MsoNormal>إليك بعض النص. نوع الخط = Calibri، حجم 12 نقطة<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><b>هذا النص عريض</b>.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><i>هذا النص مائل</i>.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span style='font-size:18.0pt'>هذا النص بحجم خط أكبر
= Calibri، حجم 18</span>.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:11.0pt;font-family:"Garamond",serif'>وهنا المزيد من النص العشوائي
وهو مركّز = Garamond، حجم 11. Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat.<o:p></o:p></span></p>
<!--EndFragment-->
</body>
</html>
منشور Discourse بعد المعالجة:
إذا لصقت هذا كود HTML في منشور على Discourse، سيبدو هكذا (بعد المرور بعملية “المعالجة”):
إليك بعض النص. نوع الخط = كالبيري، الحجم 12 نقطة
هذا النص بخط عريض.
هذا النص بخط مائل.
هذا النص بخط أكبر
= كالبيري، الحجم 18.
وهنا المزيد من النص العشوائي
المتمركز = غاراموند، الحجم 11. لوريم إيبسوم دولور سيت أميت،
كونسيكتيتور أديبيسينغ إليت، سيد دو إيمود تيمبور إنسيدنتيدت أوت لابوري إت
دولوري ماجنا أليكوا. أوت إنيم أد مينيم فينيام، كويس نوستراد إكسركيتاتيون أولامكو
لابوريس نيسي أوت أليكويب إكس إيا كومودو كونسيكوات.
ما أحاول استرجاعه
لا بأس بأن يقوم Discourse بمعالجة المنشور وعرضه بالطريقة التي يفعلها. لكن ما أريده الآن هو القدرة على أخذ منشور لاحقًا واسترجاع HTML الأصلي الأساسي. لذا يجب أن تبدو البيانات التي أسترجعها هكذا:
<body lang=EN-US style='tab-interval:.5in;word-wrap:break-word'>
<!--StartFragment-->
<p class=MsoNormal>Here is some text. Font family = Calibri, size 12pt<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><b>This text is bold</b>.<o:p></o:p></p>
(إلخ.)
حاليًا، إذا استخدمت نقطة النهاية «raw» التي قدمتها، فإنها لا توفر هذا HTML. بل توفر النص فقط، ويبدو أن معظم التنسيق والمسافات قد أُزيلت.
هل يمكنك تزويدي بتعليمات خطوة بخطوة حول كيفية تكرار ذلك؟ لقد أخذت “HTML الأصلي” الذي شاركتُه أعلاه، وأضفت وسمي <html> و<head> في الأعلى ليكون HTML صالحًا، ثم أنشأت منشورًا يحتوي على HTML في الجسم.
شكرًا لكم جميعًا. نعم، @pfaffman، هذا هو على الأقل جزء من سبب ارتبابي هنا.
لنفترض أن الهدف هو النسخ من برنامج Word، ثم اللصق في موضوع على Discourse؛ ثم القدرة لاحقًا على عرض بيانات الموضوع “الخام” واستعادة التنسيق الأصلي من Word.
هل هذا ممكن؟
تحرير: إليك ربما مثالًا أوضح (نأمل ذلك). إليك كود HTML:
<!DOCTYPE html>
<html>
<body>
<h1>Heading</h1>
<p style="font-size: 35pt">This text should be very big</p>
</body>
</html>
إذا قمت بطباعة المخرجات (على سبيل المثال، في محرر “جرّب ذلك” في W3Schools هنا)، ستنتج سطرين من النص، حيث تظهر عبارة “This text should be very big” بحجم أكبر من السطر الأول، وهو ما يتوافق مع تنسيق “font-size: 35pt”.
إذا قمت بنسخ تلك المخرجات (وليس كود HTML نفسه)، ثم لصقها في معظم الأماكن، يتم الاحتفاظ بالتنسيق. على سبيل المثال، إذا قمت بلصقها في Gmail، يتم الاحتفاظ بالتنسيق، وإذا قمت بلصقها في Microsoft Word، يتم الاحتفاظ بالتنسيق أيضًا؛ وفي الحالتين، يكون السطر الثاني، بشكل صحيح، أكبر من السطر الأول.
أما في Discourse، فإن التنسيق يُفقد حتى في نافذة محرر “الخام”: يُزال كل التنسيق، باستثناء إضافة علامة “#” الخاصة بـ Markdown إلى عنصر h1.
لذا، إذا قمت بنسخ كود HTML الفعلي ولصقه في المحرر، فإن كود HTML يُحفظ بالفعل ويمكنني استعادته بصيغته الخام. لكن إذا قمت بلصق نتيجة كود HTML، فإن التنسيق يُفقد، حتى في الصيغة الخام.
عندما ألصق المخرجات في Gmail أو Word ويحتفظان بالتنسيق، فهذا يعني أنهما يحفظان كود HTML. أما Discourse، فيبدو أنه يزيل كود HTML عند لصق مخرجات HTML.
لا. يمكنك النقر على محرر النصوص ومعاينة النص الخام الذي يتم إنشاؤه عند اللصق من برنامج Word. هذا كل ما في الأمر، لأن سحر التحويل من الحافظة إلى لغة الترميز المصغرة (Markdown) يحدث داخل المتصفح بين لحظة اللصق ولحظة ظهور النص في نافذة المحرر.
لكن هذا التحويل لا يحدث (في المحرر) إذا قمت بلصق كود HTML فعلي. هذا ما أعتقد أنني فاتني سابقًا.
أو ربما، كما قال @pfaffman، يحدث التحويل بالفعل بغض النظر عن الأمر، لكن Markdown يمكنه الاحتفاظ بـ HTML إذا تم لصقه ككود مباشر، وليس إذا تم لصق مخرجات الكود.
الهدف هو فهم كيفية عمل العملية (وهو أمر ذو صلة بعدة مشاريع). وقد ساعدت هذه المحادثة بالفعل في ذلك. ما زلت أتساءل عما إذا كان بإمكانك الوصول إلى النص بتنسيقه الأصلي عند النسخ من برنامج مايكروسوفت وورد.
فعل ذلك سيزيل جميع تنسيقات Word ويترك لك النص العادي فقط.
يحدث هذا لأنه عند “نسخ” شيء ما، تعرض التطبيق في الواقع عدة عروض مختلفة للبيانات للتطبيقات التي تلصقها فيها. اختار Discourse النسخة “المميزة” مع جميع تنسيقات Word، بينما ستختار Notepad النسخة “العادية”. من خلال تمريره عبر Notepad، تترك النسخة “العادية” فقط ليراها Discourse.