Ответ
Да, есть несколько способов взаимодействия с iframe помимо postMessage:
- Доступ к DOM iframe (если iframe с того же домена):
const iframeDoc = document.getElementById('myIframe').contentDocument;
iframeDoc.getElementById('element').style.color = 'red';
- Общие переменные (если iframe с того же домена):
// Родительская страница
window.sharedVar = 'Hello';
// В iframe
console.log(parent.sharedVar);
- URL параметры (простой способ передачи данных при загрузке):
<iframe src="page.html?param=value"></iframe>
- LocalStorage/SessionStorage (если домены совпадают):
// Родитель
localStorage.setItem('key', 'value');
// iframe
console.log(localStorage.getItem('key'));
postMessage остается самым безопасным и кросс-доменным способом взаимодействия. Другие методы работают только при соблюдении политики одинакового происхождения (Same-Origin Policy).