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 自动完成脚本整理(33个)
Oct 20 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
jQuery列表拖动排列具体实现
Nov 04 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
有关Promises异步问题详解
Nov 13 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
深入理解react-router 路由的实现原理
Sep 26 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
tracking.js实现前端人脸识别功能
Apr 16 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP4实际应用经验篇(7)
2006/10/09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
layui使用label标签的方法
2019/09/14 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
python 中的divmod数字处理函数浅析
2017/10/17 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
python tkinter控件布局项目实例
2019/11/04 Python
Python使用re模块验证危险字符
2020/05/21 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
借名购房协议书范本
2014/10/06 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书