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 相关文章推荐
Jquery 基础学习笔记
May 29 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 Javascript
js null undefined 空区别说明
Jun 13 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
基于jquery的合并table相同单元格的插件(精简版)
Apr 05 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
Sep 10 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
Feb 26 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 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
PHP初学入门
2006/11/19 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
Javascript 遍历页面text控件详解
2014/01/06 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
JS实现复制功能
2017/03/01 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python中的自省(反射)详解
2015/06/02 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Django框架安装方法图文详解
2019/11/04 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
2014最新党员违纪检讨书
2014/10/12 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
庭外和解协议书
2016/03/23 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
浅析Django接口版本控制
2021/06/26 Python
PyMongo 查询数据的实现
2021/06/28 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python