与jQuery.offset()类似的纯JavaScript函数?

问题描述 投票:5回答:3

在俄罗斯社交网络Ok.ru的小iframe-application中,我使用以下调用来调整iframe的大小:

<div id="fb-root"></div> 
<script src="http://api.odnoklassniki.ru/js/fapi.js" 
type="text/javascript"></script> 
<script type="text/javascript"> 
FAPI.init("http://api.odnoklassniki.ru/", "XXX_YYY",
function() {
        alert("clientHeight " + document.getElementById("fb-root").clientHeight);
        alert("offsetHeight " + document.getElementById("fb-root").offsetHeight);
        FAPI.UI.setWindowSize(720, 1200);
}, function(error){
        alert("API initialization failed");
});
</script> 
</body> 
</html>

即iframe高度当前已硬编码为1200

可以,但是我想使用#fb-root元素的高度/位置。

有人请问,这里可以使用哪个JavaScript或CSS函数-如果我不想只为一个$(#fb-root).offset()]调用添加jQuery吗?

我也查看了他们的库http://api.odnoklassniki.ru//js/fapi.js,但其中不包含此类功能。

UPDATE

我在上面的源代码中添加了两个警报调用,但它们只打印出来

clientHeight 0
offsetHeight 0

UPDATE

下面的代码似乎现在可以在Google Chrome和Mozilla Firefox中对我的iframe-app很好地运行,无论我添加多少测试它。但是,使用Internet Explorer时,无法调整窗口大小,并且警报在Google Chrome中显示top = 1107而不是top = 1157,因此底部的html表被切除:

“

... here my flash game + html table with players ...
<br>
<br>
<br>
<br>
<br>
<br>
<div id="fb-root"></div>
<script src="http://api.odnoklassniki.ru/js/fapi.js" type="text/javascript"></script>
<script type="text/javascript">
FAPI.init("http://api.odnoklassniki.ru/", "XXX_YYY",
function() {
        var top = findTop(document.getElementById("fb-root"));
        FAPI.UI.setWindowSize(720, Math.max(top, 1200));
}, function(error){
        alert("API initialization failed");
});
function findTop(obj) {
        if(!obj) return 0;
        return obj.offsetTop + findTop(obj.offsetParent);
}
</script>

</body>
</html>

在俄罗斯社交网络Ok.ru的一个小型iframe应用程序中,我使用以下调用来调整iframe的大小:

javascript iframe social-networking
3个回答
6
投票

Quirksmode具有一个JavaScript教程/功能,它显示了如何查找元素here的坐标


1
投票

如果document.getElementById("fb-root").clientHeight返回0,则肯定意味着您的“ fb-root” div不显示或仍然为空。


0
投票

使用offsetHeight

© www.soinside.com 2019 - 2024. All rights reserved.