頁面上給window對象定義其onresize事件,在拉伸縮小窗口時,其onresize方法將被執行多次,並且其具體執行的次數在不同的電腦有不同的值,相當詭異,Firefox等其他瀏覽器則無此現象,故可認定此為IE瀏覽器的bug。看看代碼:
<html> <head> <script type="text/javascript"> function resizeFunc(){ alert(Math.random()); } </script> </head> <body> <div>Text...</div> <script type="text/javascript"> window.attachEvent("onresize",resizeFunc); //方法一 //window.onresize = resizeFunc; //方法二,支持ff </script> </body> </html>
當拉伸或縮小窗口時,可以看到 alert 被執行了數次。
這個bug其實在幾個月前就發現了,當時進度逼得緊,沒有時間做詳細研究,況且此bug比較隱蔽,幾乎不會帶來任何異常,無非是多運行了幾遍函數,浪費點客戶的資源又不被覺察......
ok,來看看我暫時想到的解決方案:
<html> <head> <script type="text/javascript"> function resizeFunc(){ alert(Math.random()); } </script> </head> <body> <div id="box" style="width:100%"> <div>Text...</div> </div> <script type="text/javascript"> var Container = document.getElementById("box"); Container.attachEvent("onresize",resizeFunc); //方法一 //Container.onresize = resizeFunc; //方法二,支持ff </script> </body> </html>