Junior
Kaip naudojote iframe elementą savo projektuose?
sobes.tech AI
Atsakymas iš AI
Naudojau <iframe>:
- Turinio rodymui iš kitų domenų: trečiųjų šalių widget'ų (žemėlapių, vaizdo grotuvų), reklamos blokų, integracijų įgyvendinimui.
- Atskirų aplinkų kūrimui: trečiųjų šalių JavaScript kodo ar stilių paleidimui be rizikos paveikti pagrindinį puslapį. Pavyzdžiui, naudotojo turinio peržiūrai ar redaktorių paleidimui.
- Tarpdomeninio sąveikavimo: duomenų perdavimui tarp tėvinio puslapio ir
<iframe>turinio naudojantwindow.postMessage. - Statinių HTML puslapių įterpimui: dalies svetainės ar dokumento rodymui be pilnos navigacijos.
Pavyzdys naudojant window.postMessage:
Tėvinis puslapis:
// Pranešimo siuntimas iframe
const iframe = document.getElementById('my-iframe');
iframe.contentWindow.postMessage('labas iš tėvo', 'https://trusted-domain.com');
// Pranešimo priėmimas iš iframe
window.addEventListener('message', (event) => {
// Saugumo patikrinimas
if (event.origin === 'https://trusted-domain.com') {
console.log('Pranešimas iš iframe:', event.data);
}
});
Iframe viduje:
// Priimti pranešimą iš tėvinio puslapio
window.addEventListener('message', (event) => {
// Saugumo patikrinimas
if (event.origin === 'https://parent-domain.com') {
console.log('Pranešimas iš tėvo:', event.data);
// Atsakymo siuntimas tėvui
event.source.postMessage('labas iš iframe', event.origin);
}
});
Vaizdo įterpimo pavyzdys:
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
width="560"
height="315"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
Dirbant su <iframe> visada atkreipiau dėmesį į saugumo klausimus, ypač sandbox atributą ir event.origin patikrinimą naudojant window.postMessage. Taip pat atsižvelgdavau į SEO aspektus, nes <iframe> turinys atskirai indeksuojamas paieškos sistemų.