Я унаследовал несколько JS, которые определяют высоту содержимого iFrame с другого веб-сайта. iFrames не очень хороши для манипулирования контентом в iFrame с веб-сайта, это не совсем возможно.
Содержимое iFrame в моем примере работает отлично, это действительно длинная одностраничная форма, которая загружается как источник iFrame с другого веб-сайта (я не могу предоставить источник iFrame, но могу сказать, что источник не на том же домене, что и реальный веб-сайт, загружающий iFrame).
Я пытаюсь понять две вещи:
- Как это может прочитать исходный код iFrame и получить высоту.
и ... 2. Насколько надежен этот код в старых браузерах и существует ли альтернативный подход?
Приведенный ниже код работает сейчас: ему каким-то образом удается определить содержимое источника iFrame независимо от его источника и вывести целое число, которое я затем преобразовываю в пиксели, чтобы затем установить высоту iFrame через мой веб-сайт.
HTML
<div class="banner-page">
<iframe id="iframe" class="position-relative" src="https://externalwebsite.com/application-form" width="100%" frameborder="0" scrolling="no"></iframe>
</div>
JS (который получает высоту формы заявки из источника)
// Create IE + others compatible event handler
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"
var eventer = window[eventMethod]
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"
// Listen to message from child window
eventer(messageEvent,function(e) {
var str = e.data.toString()
var pageHeight = e.data
document.getElementById("iframe").style.height = pageHeight + 'px';
}, false)
Приведенный выше код работает, я хочу получить совместное мнение о том, насколько это надежно в старых браузерах и как еще я могу это изменить,
кроме того, мне интересно, есть ли способ предоставить запасное решение для общего количества пикселей, если код не работает.
Большое спасибо:)