Изменение размера HTML Iframe с помощью src, я не могу контролировать

0

Я разрабатываю приложение, которое передает 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

1 ответ

1
Лучший ответ

вы можете получить доступ только к 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

  • 0
    Спасибо, что вернулись ко мне. Обидно, что я не могу делать то, что хочу, изящно.
  • 0
    с удовольствием! в противном случае вы можете создать скрипт на вашем хосте (того же источника), который сделает запрос на стороннее предназначение и отобразит его, если пользователь и ваш iframe указали на этот скрипт - если это поможет
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню