Событие html onresizeend или эквивалентный способ определения конца изменения размера - PullRequest
4 голосов
/ 10 ноября 2008

Я пытаюсь определить, когда событие onresize заканчивается в браузере. Если я использую событие «onresize», в Firefox оно запускается только один раз, после окончания события resize, и это именно то, что я хочу. Но если я попробую в IE, событие «onresize» будет многократно запускаться при изменении размера.

Я также пробую событие onresizeend, объявленное в MSDN. Но, похоже, его вообще не уволили ни в 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" не поддерживается? В таком случае, как я могу определить, когда закончилось событие изменения размера?

Спасибо.

1 Ответ

5 голосов
/ 10 ноября 2008

С MSDN onresizeend ()

Только контентные редактируемые объекты могут быть включен в контрольный выбор. Вы может сделать содержимое объектов редактируемым установка свойства contentEditable к истине или путем размещения родителя документ в режиме оформления.

Это объясняет, почему это не стреляет для вас. Я подозреваю, что вы не хотите включать contentEditable, так почему бы не установить таймер.

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

    resizeTimer = setTimeout(doResizeEnd, 500);
}

Это не идеально, но, надеюсь, будет достаточно хорошо.

...