JavaScript浏览器选项卡效果


Posted in Javascript onAugust 25, 2010

有图如下:
JavaScript浏览器选项卡效果
代码如下:

/* 
head html : <span></span> 
body html : <iframe></iframe> 
*/ 
var Tab = function(id,title,url,isClose){ 
this.id = id; 
this.title = title; 
this.url = url; 
this.head = jQuery('<span class="tab-head">' + this.title +'</span>'); 
this.body = jQuery('<iframe name="ifm' + this.id +'" src="' + this.url +'" frameborder=0 class="tab-body"></iframe>').hide(); 
isClose && (this.close = jQuery('<span class="tab-head-closeBtn">×</span>'),this.closeBtn()); 
}; 
Tab.prototype = { 
closeBtn : function(){ 
var self = this; 
self.close.bind("mouseover",function(){ 
jQuery(this).addClass("tab-closeBtn-hover"); 
}); 
self.close.bind("mouseout",function(){ 
jQuery(this).removeClass("tab-closeBtn-hover"); 
}); 
self.head.append(self.close); 
}, 
getFocus : function(){ 
this.head.addClass("tab-head-active"); 
this.body.show(); 
}, 
loseFocus : function(){ 
this.head.removeClass("tab-head-active"); 
this.body.hide(); 
}, 
destory : function(){ 
this.head.remove(); 
this.body.remove(); 
}, 
}; 
/* 
head html : <div><span></span><span></span>...</div> 
body html : <div><iframe></iframe><iframe></iframe>...</div> 
*/ 
var TabView = function(container){ 
this.container = container; 
this.head = jQuery('<div class="tabView-head"></div>'); 
this.body = jQuery('<div class="tabView-body"></div>'); 
this.tabs = []; 
this.tabId = 0; 
this.focusTab = null; 
this.init(); 
}; 
TabView.prototype = { 
init : function(){ 
this.container.append(this.head).append(this.body); 
}, 
add : function(title,url,isClose){ 
var self = this; 
var tab = new Tab(self.tabId,title,url,isClose); 
self._tabEvents(tab); 
(self.tabs.length==0) && (tab.getFocus(),self.focusTab=tab); 
self.tabs.push(tab); 
self.head.append(tab.head); 
self.body.append(tab.body); 
self.tabId++; 
}, 
remove_ref : function(tab){ 
var self = this; 
for(var i=0;i<self.tabs.length;i++){ 
if(tab.id===self.tabs[i].id){ 
tab.destory(); 
self.tabs.splice(i,1); 
return i; 
} 
} 
return -1; 
}, 
destory : function(){ 
this.head.remove(); 
this.body.remove(); 
}, 
_tabEvents : function(tab){ 
var self = this; 
tab.head.bind("click",function(){ 
if(self.focusTab.id != tab.id){ 
tab.getFocus(); 
self.focusTab.loseFocus(); 
self.focusTab = tab; 
} 
}); 
tab.close && tab.close.bind("click",function(){ 
tab.destory(); 
var i = self.remove_ref(tab); 
if(tab.id==self.focusTab.id){//如果关闭的是当前的tab 
if(self.tabs.length==0){//如果所有tab都已关闭 
self.destory(); 
}else{ 
var nextIndex = self.tabs.length==i ? i-1 : i; 
self.focusTab = self.tabs[nextIndex]; 
self.focusTab.getFocus(); 
} 
} 
}); 
}, 
};
Javascript 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
JQuery实现表格中相同单元格合并示例代码
Jun 26 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
jQuery 实现评论等级好评差评特效
May 06 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
Jul 18 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
微信小程序实现左滑修改、删除功能
Oct 19 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
Javascript之旅 对象的原型链之由来
Aug 25 #Javascript
Javascript new关键字的玄机 以及其它
Aug 25 #Javascript
jquery下组织javascript代码(js函数化)
Aug 25 #Javascript
jquery实现居中弹出层代码
Aug 25 #Javascript
jquery下实现overlay遮罩层代码
Aug 25 #Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 #Javascript
javascript下string.format函数补充
Aug 24 #Javascript
You might like
web方式ftp
2006/10/09 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
JavaScript事件委托用法分析
2015/01/24 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
Python实现二分查找算法实例
2015/05/26 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
django项目中新增app的2种实现方法
2020/04/01 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
法国在线药房:1001Pharmacies
2021/03/07 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
如何手工释放资源
2013/12/15 面试题
优秀实习生感言
2014/03/01 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
保密工作目标责任书
2014/07/28 职场文书
共青团员自我评价
2015/03/10 职场文书
护理培训心得体会
2016/01/22 职场文书