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/jquery对上传文件格式过滤的方法
Jul 25 Javascript
js中的window.open返回object的错误的解决方法
Aug 15 Javascript
jquery zTree异步加载简单实例分享
Feb 05 Javascript
js实现连个数字相加而不是拼接的方法
Feb 23 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
bootstrap suggest搜索建议插件使用详解
Mar 25 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
Aug 31 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 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实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python 列表删除所有指定元素的方法
2018/04/19 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
婚礼答谢宴主持词
2014/03/14 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
个人创业事迹材料
2014/12/30 职场文书
优秀创业计划书分享
2019/07/19 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技