2010-06-10 56 views
1

我正在爲iGoogle/Netvibes門戶構建一個虛擬小部件。這是一個「Google地圖」小部件,因爲它只會呈現以特定位置爲中心的地圖。iframe身高未被IE8考慮到

小部件在所有瀏覽器中看起來不錯,但是IE8中我沒有考慮到包含地圖的<div>指定的高度。

下面的代碼的有趣的部分:

<body onload="initialize()" > 

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

</body> 

我對門戶網站沒有控制,所以我可以修改的唯一的事情是小工具本身。我也試圖設置<body>的高度,但是同樣的事情。

任何想法,爲什麼它不在IE中工作?

謝謝!

+0

看到我的新答案給你。 – orokusaki 2010-06-11 14:17:29

回答

2

把這個頁面你使用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> 

如果你在2個不同的領域,這是不可能的,而不幸的是提供直接的當沒有其他辦法給最終用戶。最好的解決辦法是,而不是給用戶產生使用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>'); 
+0

是的,這肯定會工作,但這部分代碼是由門戶網站爲每個部件生成的,正如我所說,我不能修改:/ 因此,我無法修改iframe元素 不過謝謝! – 2010-06-11 13:58:12

+0

@Pedro查看我更新的答案。這將爲你做。 – orokusaki 2010-06-11 14:15:53

+0

嗨orokusaki和感謝您的時間。 不幸的是,由於iframe和門戶不在同一個域下,因此我無法修改諸如window.parent ***等元素 - 用於跨域安全原因。 – 2010-06-14 07:33:19

1

您是否嘗試使用iframe標記的高度屬性?

+0

我希望我可以,但是iframe是由門戶網站生成的(每個窗口小部件都會生成一個iframe),我不能修改:/ – 2010-06-11 13:59:20