مرحبًا! نواجه خطأً في التضمين (Embedding)، حيث يظهر في إطار التضمين (iframe) ما يلي:
خطأ في التضمين
المرجع (Referer):
إما أن المرجع لم يُرسل، أو أنه لا يتطابق مع أيًا من المضيفين التاليين:
على الرغم من أن النطاقات متطابقة، وتوضح وحدة التحكم (console) ما يلي:
Uncaught SyntaxError: فشل في تنفيذ 'postMessage' على 'Window': أصل الهدف غير صالح '' في استدعاء 'postMessage'.
_embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:6 Uncaught DOMException: فشل في تنفيذ 'postMessage' على 'Window': أصل الهدف غير صالح '' في استدعاء 'postMessage'.
at e (https://sjc1.discourse-cdn.com/business5/brotli_asset/embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:1:42)
at window.onload (https://sjc1.discourse-cdn.com/business5/brotli_asset/embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:1:470)
نحن نستخدم “الإعداد البديل” (Alternate configuration)، لذا فإن الموضوع المحلول لا يفيدنا حقًا.
(الإعداد البديل) ربط المواضيع الموجودة
يفضل بعض الأشخاص ألا يقوم Discourse بإنشاء مواضيع تلقائيًا على منتدياتهم. بدلاً من ذلك، يريدون إنشاء المواضيع بأنفسهم، ثم إخبار كود التضمين بالموضوع الذي يريدون ربطه. يمكنك فعل ذلك عن طريق تعديل بسيط في كود التضمين:
<div id='discourse-comments'></div> <script type="text/javascript"> DiscourseEmbed = { discourseUrl: 'http://discourse.example.com/', topicId: 12345 }; (function() { var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true; d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d); })(); </script>الفرق الوحيد هنا هو أننا استبدلنا
discourseEmbedUrlبمعرف موضوع من Discourse. إذا قمت بذلك، لن يتم إنشاء أي موضوع، وسيتم عرض التعليقات من ذلك الموضوع تلقائيًا.
من Embed Discourse comments on another website via Javascript
هل توجد طريقة سهلة لتصحيح هذا الخطأ؟ من أين يُستخرج المرجع (referrer) ولماذا قد يكون فارغًا؟
هل هذه مشكلة معروفة/شائعة، وهل توجد طريقة لإخفاء إطار التضمين (iframe) أو محتوياته عند حدوث خطأ؟
عند النقر على السكربت حيث يحدث الخطأ، يبدو أنه لا يستطيع العثور على مرجع لـ postMessage داخل العنصر #data-embedded.}