html onresizeend evento o equivalente a rilevare fine del ridimensionamento

voti
4

Sto cercando di rilevare quando l'evento onResize finisce in un browser. Se io uso l'evento onResize, in Firefox sembra essere licenziato solo una volta, dopo l'evento di ridimensionamento si conclude, che è esattamente quello che voglio. Ma se provo in IE, l'evento onResize viene licenziato molte volte durante il ridimensionamento.

Cerco anche l'evento onresizeend, pubblicizzato in MSDN. Ma non sembra essere licenziato a tutti, né in FF, né in IE. Io uso il seguente codice:

<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>

Tutte le idee perché questo non funziona? Forse l'evento onresizeend non è supportato? In questo caso, come posso rilevare quando l'evento di ridimensionamento si è concluso?

Grazie.

È pubblicato 10/11/2008 alle 11:36
fonte dall'utente
In altre lingue...                            


1 risposte

voti
5

Da MSDN onresizeend ()

Solo oggetti modificabili contenuti possono essere inclusi in una selezione di controllo. È possibile rendere i contenuti oggetti modificabili impostando la proprietà contentEditable true o posizionando il documento principale in modalità di progettazione.

Questo spiega il motivo per cui non è sparare per voi. Ho il sospetto che non si desidera attivare contentEditable, quindi perché non impostare un timer.

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

    resizeTimer = setTimeout(doResizeEnd, 500);
}

Non è perfetto, ma si spera sarà abbastanza buono.

Risposto il 10/11/2008 a 11:59
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more