اجعل الإطار (iframe) بطول محتواه
غيّر ارتفاع الإطار ليناسب محتواه، ولماذا لا ينجح ذلك مباشرة إلا مع صفحات من موقعك نفسه.
من الأرشيف: نُشر أصلًا على mohamedsharaf.net في فبراير 2012. أُعيدت كتابته ومراجعته في 2026، وبعض التفاصيل قد تكون قديمة.
للإطار (iframe) ارتفاع ثابت، فإما أن يُقطع محتواه أو يترك مساحة فارغة. إذا كانت الصفحة داخل الإطار على نطاقك نفسه، تستطيع الصفحة الأم قراءة ارتفاعها وتعديل الإطار بعد التحميل:
<iframe id="frame" src="/embed/report.html" style="width:100%;border:0"></iframe>
<script>
const frame = document.getElementById('frame');
frame.addEventListener('load', () => {
frame.style.height = frame.contentDocument.documentElement.scrollHeight + 'px';
});
</script>
المتصفحات تمنع ذلك مع صفحات من نطاقات أخرى، وهذا مقصود: لا يجوز لموقع أن يقرأ محتوى موقع آخر. في هذه الحالة يجب أن تتعاون الصفحة المضمّنة وترسل ارتفاعها عبر window.parent.postMessage(...)، وتستقبل صفحتك الرسالة (وتتحقق من مصدرها) قبل تغيير الارتفاع.