4

我正在尝试检测 onresize 事件何时在浏览器中结束。如果我使用“onresize”事件,在 Firefox 中它似乎只被触发一次,在 resize 事件结束后,这正是我想要的。但是如果我在 IE 中尝试,“onresize”事件会在调整大小期间多次触发。

我还尝试了 MSDN 中宣传的“onresizeend”事件。但它似乎根本没有被解雇,无论是在 FF 还是在 IE 中。我使用以下代码:

<html>
    <head>
        <script>
        <!--
        function doLog(message)
        {
            document.getElementById("log").innerHTML += "<br/>" + message;
        }

        function doResize()
        {
            doLog("plain resize");
        }

        function doResizeEnd()
        {
            doLog("resize end");
        }
        -->
        </script>
        <style>
        <!--
        #log {
            width: 400px;
            height: 600px;
            overflow: auto;
            border: 1px solid black;
        }
        -->
        </style>
    </head>
    <body onresize="doResize();" onresizeend="doResizeEnd();">
        <div id="log"/>
    </body>
</html>

任何想法为什么这不起作用?也许不支持“onresizeend”事件?在这种情况下,如何检测 resize 事件何时结束?

谢谢。

4

1 回答 1

5

来自MSDN onresizeend()

只有内容可编辑对象才能包含在控件选择中。您可以通过将 contentEditable 属性设置为 true 或将父文档置于设计模式来使对象内容可编辑。

这就解释了为什么它不适合你。我怀疑你不想启用 contentEditable,所以为什么不设置一个计时器。

var resizeTimer = 0;
function doResize()
{
    if (resizeTimer)
        clearTimeout(resizeTimer);

    resizeTimer = setTimeout(doResizeEnd, 500);
}

它并不完美,但希望会足够好。

于 2008-11-10T12:59:15.407 回答