Выращивание Iframe в зависимости от источника внутри него (который является другим сервером) - PullRequest
0 голосов
/ 28 января 2010

Я использую javascript для расширения Iframe до размера загружаемого документа, чтобы удалить любую вертикальную полосу прокрутки, например:

function resizeIframes() {
    $('iframe').load(function()
        {
            this.style.height = (this.contentWindow.document.body.offsetHeight + 40) + 'px';
        }
    );
}

Который работает достаточно хорошо для моих целей. Но теперь мне нужно загрузить Iframe с веб-сайта с другого сервера (на самом деле это другой поддомен, а не «www.mydomain.com», это «services.mydomain.com»), и, согласно Firebug, мне запрещено читать свойства из другие домены через Javascript. Я предполагаю какую-то проблему с песочницей?!

Есть ли способ обойти это или хотя бы получить какую-то информацию о размере контента? Я бы даже хотел проверить, есть ли полоса прокрутки, и постоянно увеличивать iframe, пока он не исчезнет, ​​но, в отличие от оконного объекта, объект iframe, похоже, не имеет свойства .scrollbars.

Ответы [ 2 ]

1 голос
/ 28 января 2010

Извините, если вы нашли этот ответ неполным (это так). У меня просто нет примеров кода со мной. Я обрисую основную концепцию, и вам придется заполнить детали самостоятельно.

Для этого необходимо использовать некоторые приемы, поскольку безопасность XSS не позволяет фреймам с одного сайта получать доступ к фреймам с другого сайта:

  • site1: page1 : вызов iframe (site2:page1) на втором сайте. Давайте предположим, что свойство iframe ID равно "myframe".

  • site2: page1 : запустить JavaScript (в body.onload), чтобы вычислить размер текущего представления (я думаю, вы должны использовать document.scrollTop и т. Д.). Также запустите iframe (site1:page2), передав необходимую ширину в строке запроса.

  • site1: page2 : прочитайте строку запроса и выясните запрошенную высоту, обновите parent.parent.document.getElementById("myframe").style.height

0 голосов
/ 28 января 2010

Если это просто другой поддомен, document.domain должен предоставить вам необходимый доступ между кадрами.

...