代码之家  ›  专栏  ›  技术社区  ›  TM. Randy Simon

IE中的Script.aculo.us可排序onUpdate问题[已关闭]

  •  0
  • TM. Randy Simon  · 技术社区  · 16 年前

    我正在进行一个项目,其中我正在使用script.aculo.us可排序对象。

    它在Firefox和Chrome中运行得又快又好,但在IE中,每当我删除一个元素时,它的速度就慢得令人难以置信。

    我做了一点检查,结果发现在IE中,“onUpdate”回调函数在每次我删除时都会被调用大约8次。通常,每个可排序容器(目的地和来源地)只调用一次。

    由于回调函数调整了某些元素的大小并在这些元素中绘制图形,因此每次调用所涉及的计算量相当大。

    编辑: onUpdate 当可排序的顺序更改时,即使拖动尚未结束,函数也会被激发。看来 更新 实际上是像 onChange 回拨,但只回拨IE。

    2 回复  |  直到 13 年前
        1
  •  1
  •   Diodeus - James MacFarlane    16 年前

    我认为你怎么用定时器是错误的。您只希望计时器在超时后触发一次。如果在超时期间仍有事情发生,则需要重置计时器并重新启动,否则您只是在延迟最初所做的事情。

    var timer1
    Sortable.create("fList", {constraint:false,onChange:function(){triggerUpdate()}})
    
    function triggerUpdate() {
        clearTimeout(timer1)
        window.setTimeout(function(){showList()},800)
    }
    function showList() {
        var now = new Date()
        alert(now)
    
    }
    
        2
  •  1
  •   scunliffe    16 年前

    我不知道script.aculo.us,但在调整事件大小时,即不只是在调整大小后(像大多数其他浏览器一样)连续触发事件,因此我猜测onUpdate是基于其他多次触发(如调整大小)的事件在内部触发的。