высота iframe не учитывается IE8 - PullRequest
1 голос
/ 10 июня 2010

Я создаю фиктивный виджет для портала, похожего на iGoogle / Netvibes. Это виджет "Карты Google", поскольку он отображает только карту с центром в определенном месте.

Виджет хорошо выглядит во всех браузерах, кроме IE8, в котором высота, указанная для <div>, содержащего карту, не учитывается.

Вот интересная часть кода:

<body onload="initialize()" >

<div id="map_canvas" style="height:400px; width: 100%;"></div>

</body>

У меня нет контроля над порталом, поэтому я могу изменить только один виджет. Я также пытался установить высоту для <body>, но тоже самое.

Есть идеи, почему он не работает в IE?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

Поместите это на страницу, которую вы вызываете с помощью iframe:

<script type="text/javascript">
    var iframes = window.parent.document.getElementsByTagName('iframe');
    for(var i = 0; i < iframes.length; i ++)
    {
        if(iframes[i].src == window.location)
        {
            iframes[i].style.height = '400px';
        }
    }
</script>

Если вы находитесь в двух разных доменах, это невозможно, и, к сожалению, другого способа доставки <iframe> напрямую конечному пользователю нет. Лучшим решением было бы вместо этого предоставить пользователю тег сценария, который генерирует тег <iframe> с использованием document.write()

Пример тега скрипта, который нужно передать вашему клиенту:

<script type="text/javascript" src="http://www.example.com/widget-getter.js?client=[clientid]&amp;widget=[widgetid]"></script>

Содержимое скрипта, который вызовет вышеуказанный тег:

document.write('<iframe height="400px" src="http://www.example.com/widget.html"></iframe>');
1 голос
/ 11 июня 2010

Вы пытались использовать атрибут высоты тега iframe?

...