2011-04-12 107 views
3

我知道,IE浏览器supports the onresize event for any element而FireFox suporty它for the window object only跨浏览器元素onresize(HTML/JS)

因为我需要任何现代浏览器的功能,我目前正在使用(相当快)的间隔计时器,连续检查元素的clientWidth/clientHeight以模拟onresize。当然这是非常低效的,我想知道是否有跨浏览器的方式来做到这一点。或者,也可以选择使用FF/WebKit/IE中的不同方法,以便可以将定时器方法用作剩余浏览器的后备。

定位在普通的JavaScript,而不是JQuery的/原型等

回答

0

如果你不想使用jQuery,那么你必须检查发送的浏览器到你的剧本,所以:

if(!element.onresize != null) element.onresize += event; 
if(!element.onresizeAnotherHandler != null) element.onresizeAnotherHandler += event; 

我不知道这是否容易,但它是一个普遍的概念。

编辑:它看起来像没有Firefox的事件处理程序。但有一个窍门:

  • 如果你在你的JS宽度变化只是创建一个功能更新

    function update(var nx, var ny){ 
        // do something with nx and ny 
    } 
    
  • 如果你使用JavaScript

  • 它使用CSS增加了一个调整手柄

    如果您在CSS中使用类似80%的东西,然后处理window.onresize:

    function resize(){ 
        alert(document.getElementById("test").style.width); 
    } 
    

    window.onresize = resize;

看起来没有其他办法。

+0

我需要的是当元素改变尺寸时,浏览器中的直接事件。 AFAIK这只在IE中可用... – 2013-02-15 15:24:42

+0

它现在看起来不可能。 – 2013-02-18 17:09:09