Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Javascript 铬和IE中的止滴_Javascript_Google Chrome_Internet Explorer_Extjs5 - Fatal编程技术网

Javascript 铬和IE中的止滴

Javascript 铬和IE中的止滴,javascript,google-chrome,internet-explorer,extjs5,Javascript,Google Chrome,Internet Explorer,Extjs5,我一直无法让stopPropagation为我的dataview工作。基本问题如下: 在dataview中选择节点,这将触发Select、selectionchange事件 选定节点有一个带有onClick事件的图像,这将在弹出窗口中创建一个报告 单击图像时,我调用StopRopagation以防止事件冒泡到dataview,这将导致触发取消选择、selectionchange事件 stopPropagation似乎只在Firefox中对我有效。Chrome和IE似乎没有任何效果,因为节点被取

我一直无法让stopPropagation为我的dataview工作。基本问题如下:

  • 在dataview中选择节点,这将触发Select、selectionchange事件
  • 选定节点有一个带有onClick事件的图像,这将在弹出窗口中创建一个报告
  • 单击图像时,我调用StopRopagation以防止事件冒泡到dataview,这将导致触发取消选择、selectionchange事件
  • stopPropagation似乎只在Firefox中对我有效。Chrome和IE似乎没有任何效果,因为节点被取消选择,不需要的事件被触发
我在onClick事件上尝试了以下函数

handleBubbleEvent: function(e) {
    if (!e) {
        var e = window.event;
    }
    e.cancelBubble = true;
    e.returnValue = false;
    if (e.stopPropagation) {
        e.stopPropagation();
    }
}
我们也看到了stopImmediatePropagation、preventDefault、stopEvent,但这些都没有效果

我在Ext XTemplate中完成所有这些

<a href="#" title="Report" class="quicklinks journey_report" onClick="handleBubbleEvent(event); Ext.getCmp(...).generateReport(...); return false;"></a>

我想知道这是否是一个ExtJS5问题,并且相同的代码适用于旧版本的ExtJS。我似乎无法阻止click事件冒泡返回到dataview,dataview随后触发取消选择和selectionchange事件

可能是时间/订单问题。我在dataview上使用ExtJS的selectionchange事件,而在XTemplate中使用我自己的侦听器函数?我在网上看到一些引用事件捕获/冒泡的东西,因为我不是一名web开发人员,所以我在这方面很挣扎

更新:
我现在看到的是事件和捕获/冒泡,似乎捕获要转到父级并调用取消选择、选择更改,然后进入实际的单击处理程序,在这一点上,我调用StopRopagation,但在这个阶段已经太晚了。正在考虑为selectionchange创建我自己的侦听器,并设置目标/委托,以便仅在类!='时调用它“某个类”和“某个类”上的侦听器单击以处理我想要的内容并停止播放,如果这有意义的话

尝试对event.target元素的事件处理程序触发的任何dom操作使用setTimeout,以便在任何dom操作发生之前完成事件冒泡

我在Chrome上也有同样的问题,而且(和你一样)Firefox工作正常。我发现,如果在事件冒泡完成之前修改dom,Chrome似乎会感到困惑

在我的例子中,我向document.body添加了两个元素(画布和字段集),当chrome冒泡事件时,event.target不正确(它认为“body”是event.target.tagName——错误!)。我将DOM操纵部分包装在setTimeout中,如下所示:

    setTimeout(()=>
    {
        document.body.appendChild(canvas);
        document.body.appendChild(fieldSet);            
    },0);

在此之后,chrome开始在冒泡体单击事件中报告正确的element.target。也许同样的技术可以帮助您在dom操作发生之前让e.stopPropagation()完成它的工作。

尝试对event.target元素的事件处理程序触发的任何dom操作使用setTimeout,以便在任何dom操作发生之前完成事件冒泡

我在Chrome上也有同样的问题,而且(和你一样)Firefox工作正常。我发现,如果在事件冒泡完成之前修改dom,Chrome似乎会感到困惑

在我的例子中,我向document.body添加了两个元素(画布和字段集),当chrome冒泡事件时,event.target不正确(它认为“body”是event.target.tagName——错误!)。我将DOM操纵部分包装在setTimeout中,如下所示:

    setTimeout(()=>
    {
        document.body.appendChild(canvas);
        document.body.appendChild(fieldSet);            
    },0);

在此之后,chrome开始在冒泡体单击事件中报告正确的element.target。也许同样的技术可以帮助您在dom操作发生之前让e.stopPropagation()完成它的工作。

事件处理程序本身可能也会返回false。我应该补充一点,onClick代码位于Ext.XTemplate中,所以它看起来像这样;onClick=handleubbleevent(事件);Ext.getCmp(…).generateReport(…);返回false;事件处理程序本身可能也应该返回false;onClick=handleubbleevent(事件);Ext.getCmp(…).generateReport(…);返回false;