Chat via WhatsApp

Cara Embed Halaman HTML Agar Tingginya Menyesuaikan Otomatis Menggunakan iframe-resizer

Cara Embed Halaman HTML Agar Tingginya Menyesuaikan Otomatis Menggunakan iframe-resizer

Ketika menampilkan halaman HTML melalui <iframe>—misalnya dashboard, laporan, tabel interaktif, form, atau aplikasi web kecil—sering terjadi masalah:

  • Iframe kepotong
  • Iframe terlalu pendek
  • Scrollbar ganda muncul
  • Konten di dalam berubah tinggi, tapi iframe tidak mengikuti
  • Modal, filter, atau DataTables keluar area iframe

Penyebabnya sederhana: iframe tidak bisa mengetahui tinggi konten di dalamnya, terutama jika konten berasal dari domain berbeda (cross-domain).

Solusi paling stabil untuk mengatasi masalah ini adalah menggunakan iframe-resizer, sebuah library kecil dan ringan yang memungkinkan halaman di dalam iframe mengirimkan tinggi aktual ke halaman luar.

Artikel ini membahas cara menggunakannya untuk publik, lengkap dengan script siap pakai.


⭐ Apa itu iframe-resizer?

iframe-resizer adalah library JavaScript yang:

  • Menyesuaikan tinggi iframe secara otomatis
  • Memperbarui tinggi saat konten berubah (pagination, filter, modal, AJAX, dsb.)
  • Bekerja cross-domain
  • Sangat ringan (~7 KB)
  • Kompatibel dengan semua browser modern

Cocok untuk:

  • Dashboard interaktif
  • Tabel DataTables
  • Aplikasi HTML mandiri
  • Laporan atau katalog
  • Form dinamis
  • Halaman statis dari hosting manapun

⭐ Cara Menggunakannya

iframe-resizer membutuhkan dua skrip:

  1. Script Parent (di halaman yang memuat iframe)
  2. Script Child (di halaman HTML yang di-embed)

1️⃣ Pasang Script Parent

Ini diletakkan di halaman tempat iframe berada (misalnya WordPress, Blogger, Webflow, HTML statis, dll).

Tempel kode berikut:

<div style="width:100%;max-width:100%;overflow:hidden;">
<iframe
id="autoFrame"
src="URL-HALAMAN-YANG-MAU-DI-EMBED"
style="width:100%;border:0;display:block;"
scrolling="no"
frameborder="0">
</iframe>
</div>
<!-- iframe-resizer parent -->
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer/js/iframeResizer.min.js"></script>
<script>
iFrameResize({
log: false,
checkOrigin: false, // wajib jika berbeda domain
heightCalculationMethod: "max", // paling stabil untuk konten dinamis
warningTimeout: 0
}, "#autoFrame");
</script>

Penjelasan:

  • checkOrigin:false → perlu jika sumber iframe dari domain lain
  • heightCalculationMethod:"max" → memastikan iframe mengikuti tinggi maksimal halaman
  • Tidak perlu height manual

2️⃣ Pasang Script Child

Script ini harus ditempel di halaman HTML yang ingin ditampilkan dalam iframe.

Letakkan sebelum </body>:

<!-- iframe-resizer child -->

<script src="https://cdn.jsdelivr.net/npm/iframe-resizer/js/iframeResizer.contentWindow.min.js"></script>

Fungsi:

  • Mengirim tinggi halaman ke parent secara otomatis
  • Update saat konten berubah
  • Tidak perlu konfigurasi tambahan

⭐ Contoh Struktur Sederhana

Parent (WordPress atau website utama)

<iframe id="autoFrame" src="https://example.com/dashboard/"></iframe>
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer/js/iframeResizer.min.js"></script>
<script>
iFrameResize({ checkOrigin:false }, "#autoFrame");
</script>

Child (dashboard/index.html)

<script src="https://cdn.jsdelivr.net/npm/iframe-resizer/js/iframeResizer.contentWindow.min.js"></script>

⭐ Kelebihan iframe-resizer

Fitur Ya / Tidak
Auto menyesuaikan tinggi ✔
Kompatibel WordPress / Webflow / Blogger ✔
Support konten dinamis ✔
Cross-domain ✔
Tidak perlu plugin ✔
Perubahan konten real-time (pagination, modal) ✔
Mudah dipasang ✔

🧪 Troubleshooting Umum

1. Iframe masih kepotong

Tambahkan fallback kecil di CSS parent:

#autoFrame {
min-height: 900px !important;
height: auto !important;
}

2. Elementor/Divi menetapkan height fixed

Tambahkan:

iframe { height: auto !important; }

3. Child script belum dipasang

Pastikan halaman HTML yang di-embed menyertakan:

<script src="https://cdn.jsdelivr.net/npm/iframe-resizer/js/iframeResizer.contentWindow.min.js"></script>

4. URL iframe salah

Pastikan URL bisa diakses publik.


🎯 Kesimpulan

Jika Anda ingin meng-embed halaman interaktif (dashboard, tabel, laporan) tanpa masalah tinggi terpotong, solusi terbaik adalah:

✔ Parent: iframeResizer.min.js

✔ Child: iframeResizer.contentWindow.min.js

Dua baris sederhana, namun hasilnya:

  • tampilan mulus
  • pengalaman pengguna maksimal
  • kompatibel lintas platform
  • embed halaman apa pun tanpa stress