Javascript 页面高度更改时检查/触发

Javascript 页面高度更改时检查/触发,javascript,html,iframe,height,watch,Javascript,Html,Iframe,Height,Watch,案例: 我在网上搜索,根据iframe的内容重新调整iframe的大小(iframe和页面宿主来自同一个域)。我发现可能的解决方案是从iframe调用父窗口函数,发送大小以设置iframe的高度。这很容易实现 问题: 现在的问题是iframe中的页面加载是AJAX密集型的,并且依赖于用户在页面上的交互。高度可以相对于用户的操作增加或减少(请注意,高度仅在用户交互时更改,而不是随机或自动更改)。现在我想在“body”(iframe内的页面)的高度改变高度时触发一个函数。这将有助于我在每次ifram

案例:

我在网上搜索,根据iframe的内容重新调整iframe的大小(iframe和页面宿主来自同一个域)。我发现可能的解决方案是从iframe调用父窗口函数,发送大小以设置iframe的高度。这很容易实现

问题:

现在的问题是iframe中的页面加载是AJAX密集型的,并且依赖于用户在页面上的交互。高度可以相对于用户的操作增加或减少(请注意,高度仅在用户交互时更改,而不是随机或自动更改)。现在我想在“body”(iframe内的页面)的高度改变高度时触发一个函数。这将有助于我在每次iframe内部的高度发生变化时重新调整iframe的大小

可能的解决方案:

我试着用

jQuery(document).ready(function(){
    document.body.watch("clientHeight", function(property, oldHeight, newHeight) {
        alert('New Height: ' + newHeight);
    });
});
但该函数从未触发。从我在互联网上的发现来看,即使我让它工作起来,它在IE上也不起作用。我想要一个至少对IE8起作用的解决方案

另一个可能的解决方案是观察用户对可能导致高度变化的事件的交互。但这将是非常低效的,因为有很多这样的事件可能会导致高度变化

那么,最好的解决办法是什么呢

问候


Jehanzeb

看到了吗?“一般来说,如果可能的话,你应该避免使用watch()和unwatch()。这两种方法只在Gecko中实现,它们主要用于调试使用。此外,使用watchpoints对性能有严重的负面影响。”是的,我在发布问题时理解了这一点。事实上,我从来没有找到我问题的答案。我想到的解决方案要么是在客户端浏览器上加载。或者是速度太慢以至于感觉像是程序中的一个小故障。我们最终不得不离开iframe(Jehanzeb我实际上也在寻找同样的方法,除了在特定时间间隔内进行连续轮询之外,似乎没有解决方案。比
watch
好得多,但无论如何都不理想。@Tomas,是的,我也尝试过轮询。我实际上是想避免在一个页面上出现多个滚动条。在500毫秒的间隔内进行轮询会产生一种滚动条显示然后消失的小故障。由于垂直滚动条,页面宽度发生了变化,影响了页面设计。低于此值的轮询似乎毫无意义。我讨厌在代码中使用时间/延迟。Jehanzeb完全正确。另一种解决方案(我将遵循)是处理代码中所有可能的位置,在这些位置您可以更改页面高度并自己生成一些自定义事件。