Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
extjsjavascript执行_Javascript_Extjs - Fatal编程技术网

extjsjavascript执行

extjsjavascript执行,javascript,extjs,Javascript,Extjs,我有一个典型的ExtJS风格的窗口,带有左侧导航、标题和中心区域来显示内容 左侧导航有一组菜单项,当单击Panel.load()方法时,这些菜单项会从指定的url加载到中央面板中 我的问题是,在IE中,如果我太快地单击许多菜单项,就会出现各种javascript错误,我认为dom元素正试图被访问,而这些元素在更新html的过程中不再存在 是否有人遇到过这种情况,或者在新的加载请求启动后是否有人停止javascript执行 我试过使用这个: if(Ext.isIE) { w

我有一个典型的ExtJS风格的窗口,带有左侧导航、标题和中心区域来显示内容

左侧导航有一组菜单项,当单击Panel.load()方法时,这些菜单项会从指定的url加载到中央面板中

我的问题是,在IE中,如果我太快地单击许多菜单项,就会出现各种javascript错误,我认为dom元素正试图被访问,而这些元素在更新html的过程中不再存在

是否有人遇到过这种情况,或者在新的加载请求启动后是否有人停止javascript执行

我试过使用这个:

    if(Ext.isIE) {
        window.document.execCommand('Stop');
    }
    else {
        window.stop();
    }

提前谢谢

想到了一个简单的解决方案:您可以创建一个全局变量来指示正在加载,并在单击菜单项后立即检查它。只有在加载尚未进行的情况下才能继续执行。

处理过快单击的常见解决方案是加载面板的单击处理代码,以便只有在指定的时间段内没有再次单击时才会运行。比如:

item.on('click', function(){ ... }, this, {buffer:50});

Ok可能适用于单个按钮,如果页面加载时间小于50毫秒。但是有很多菜单项。如果用户单击A然后单击B,则会出现C和错误。另外,C可能需要5秒钟来加载一个非常繁重的页面,所以我真的在寻找一种方法来取消当前的加载,而不是阻止用户触发一个新事件。我不确定你是否清楚缓冲是如何工作的。其思想是,在您的示例中,如果A和B的单击速度超过缓冲区阈值,那么它们将永远不会被加载,因此您不应该得到错误。当然,如果你有需要5秒的东西,而用户在4秒后点击了其他东西,你将不得不单独处理。但我仍然认为缓冲可能有助于“快速点击”场景(通常在多次快速点击可能导致问题时是一种很好的方法)。这听起来可能有帮助,但我不确定如何将其应用于手风琴项目点击。是的,这是一个选项,但我不想停止用户活动。其中一个页面可能需要很长时间才能在星期四加载5秒以上。如果他们无意中点击了这个,理想情况下,我只希望javascript被取消,新事件立即触发,否则系统可能会变得烦人,对用户来说会变得迟钝