Я разрабатываю приложение, которое передает URL-адрес, содержащий токен сеанса из API. Этот URL-адрес предоставит пользователю приложения возможность просматривать результаты поиска из сторонних баз данных через API.
Проблема, с которой я столкнулся, заключается в том, что при представлении результатов (URL) в iframe это выглядит очень уродливо из-за полосы прокрутки iframe. Я потрудился получить обычные результаты Google, но я нахожу, что я довольно тупик относительно того, как увеличить высоту iframe, чтобы соответствовать входящему контенту.
Я нашел пример именно того, что хотел бы, но при попытке реплицировать код, которому мне не повезло.
Эта ссылка... Как вы можете видеть, страница загружает iframe в базовую таблицу HTML и расширяется для размещения размера содержимого в iframe.
Здесь исходный код для HTML:
<html>
<body>
<table width="100%" border=1>
<tr><td>Header</td></tr>
<tr><td>Navigation</td></tr>
<tr><td>
<iframe onload="resize(this)" src="/test/phpinfo.php">
</iframe>
</td></tr>
<tr><td>footer</td></tr>
</table>
<script>
function resize(elem){
var outer=elem;
var inner=elem.contentDocument.documentElement;
outer.style.border="0";
outer.style.overflow="hidden";
outer.style.height=Number(inner.scrollHeight+10)+"px";
outer.style.width=Number(inner.scrollWidth+10)+"px";
}
</script>
</body>
</html>
Ничего особенного? Но copypasta кода (очевидно, изменение src) ничего не делает. Мне кажется, что я беру с собой сумасшедшие таблетки, это должно быть 2-секундная работа, но она не работает для меня. Это все дело на стороне клиента, верно? На сервере нет волшебства вуду.
Итак, дамы и господа, что я делаю неправильно, или как я могу это сделать? Пожалуйста, имейте в виду, что я не могу влиять на HTML в iframe, поскольку он подается через API, и я не могу его трогать.
спасибо
EDIT: Это причина, по которой он не будет работать с той же политикой происхождения.
вы можете получить доступ только к iframe contentDocument
с помощью javascript, когда происхождение iframe и contentDocument
значение iframe src совпадают и соответствуют друг другу.
в противном случае браузер не позволит вам получить доступ к внутреннему документу contentDocument
Blocked a frame with origin "http://example.de" from accessing
a frame with origin "http://otherorigin.example.de". Protocols,
domains, and ports must match.
вы отправили пример страницы
http://frank.bridgewater.edu/test/iframeResize/
и iframe src origin
http://frank.bridgewater.edu/test/phpinfo.php
совпадений (одинаковое происхождение). поэтому здесь он работает, и скрипт может получить доступ к iframe contentDocument