2011-04-12 110 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