Прежде чем начнутся комментарии «избиение мертвой лошади», позвольте мне уточнить, что я пытаюсь сделать, чтобы узнать, может ли кто-нибудь помочь мне.iFrame Автоматическая калибровка
У меня есть родительское окно с iFrame в нем. Содержимое в iFrame загружается из отдельного домена, где я думаю, что мои проблемы начинаются, хотя это должно быть именно так. Когда страница первоначально загружается, я выполняю следующее:
<script language="javascript" type="text/javascript">
var reportFrame = document.getElementById('report');
function resizeIframe() {
var height = document.documentElement.clientHeight;
height -= reportFrame.offsetTop;
// not sure how to get this dynamically
height -= 20; /* whatever you set your body bottom margin/padding to be */
reportFrame.style.height = height + "px";
}
reportFrame.onload = resizeIframe;
window.onresize = resizeIframe;
</script>
Это прекрасно работает. В iFrame нет полос прокрутки и отлично смотрится, как я хочу. Проблема, с которой я сталкиваюсь, - это iFrame имеет кнопку, которая вызывает обратную связь по кадру. Мне нужно запустить этот скрипт, когда iFrame перезагрузится, чтобы запретить показывать полосы прокрутки. Из-за того, что дочерняя страница находится в отдельном домене, я не могу вызывать функцию от нее родительской (довольно уверен, что это то, где XSS входит в игру), поэтому мне нужно придумать другой способ, чтобы родитель знал это необходимо запустить этот скрипт, потому что iFrame перезагружается.
Любые предложения?
Я думал об этом, но не был уверен в влиянии на производительность. Я дам ему шанс! Благодаря! – RubyHaus
Я пробовал и без радости - я думаю, что это связано с тем, что окно не меняет размер, так как оно отключается от клиента. Высота окна. Любые другие предложения? – RubyHaus
Добавил некоторые ссылки в свой ответ. И таймер должен работать нормально. Может быть, с 500 мс даже. Чтобы оптимизировать его, вы можете запускать таймер каждый раз, когда вы получаете onmouseleave на родительском фрейме и останавливаете его, когда вы получаете onmouseenter. Но не уверен, что вам действительно нужно работать мудро. Это может быть преждевременная оптимизация. –