zoukankan      html  css  js  c++  java
  • IE JQuery 多Tab iframe 关闭Tab导致光标丢失

    项目中使用DWZ作为jq框架,因为之前开发的东西都在传统的webform上,所以使用了大量的iframe,用其openExternal函数实现多Tab.

    开发中还好,使用中发现,在ie下,如果一个Tab页下再打开一个Tab页,然后提交后调用closeCurrentTab的方式,结果光标就死活找不回来,只能用Tab键才能找回。

    然后就开始茫茫的baidu,发现和我一样用法的人很少,哎,土人,跟不上时代。

    终于,被我看到了一个和我一样用法的人,可惜人家不是用dwz,只是讲到这其实是IE的bug。

    现象如下:

     框架内嵌iframe点击事件弹出层,弹出层又嵌套iframe,当弹出层iframe里面input获得光标后,删除弹出层(用的是jQuery.remove(),#.parentNode.removeChild(#)也测试不行),框架内嵌iframe的input获不得焦点了。

    解决办法: 
    先删除iframe,再删除弹出层。

    因此,我们要修改dwz.navTab.js的_closeTab方法,然后IE就没bug了。 

     _closeTab: function (index, openTabid) {
            var iOpenIndex = this._indexTabId(openTabid);
            var $panel = this._getPanels().eq(iOpenIndex);
            $panel.find("iframe").remove();
            CollectGarbage();
            this._getTabs().eq(index).remove();  
            this._getPanels().eq(index).trigger(DWZ.eventType.pageClear).remove();
            this._getMoreLi().eq(index).remove();
            if (this._currentIndex >= index) this._currentIndex--;
    
            if (openTabid) {
                var openIndex = this._indexTabId(openTabid);
                if (openIndex > 0) this._currentIndex = openIndex;
            }
    
            this._init();
            this._scrollCurrent();
            this._reload(this._getTabs().eq(this._currentIndex));
        },

  • 相关阅读:
    hdu 1003 dp最大子序列和
    模拟题 (+queue队列知识)
    hdu 1016 DFS
    OSGi 系列(二)之 Hello World
    OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统
    Mina 系列(四)之KeepAliveFilter -- 心跳检测
    Mina 系列(三)之自定义编解码器.md
    Mina 系列(二)之基础
    Mina 快速入门
    Java 8 Optional 类深度解析
  • 原文地址:https://www.cnblogs.com/wildfish/p/3123725.html
Copyright © 2011-2022 走看看