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学习笔记2 函数
Jan 11 Javascript
理解JavaScript中的对象 推荐
Jan 09 Javascript
Jquery 自定义动画概述及示例
Mar 29 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
javascript创建函数的20种方式汇总
Jun 23 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
详解puppeteer使用代理
Dec 27 Javascript
JS代码优化的8点建议
Feb 04 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 Javascript
小程序实现上传视频功能
Aug 18 Javascript
15个值得收藏的JavaScript函数
Sep 15 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
CSS和Javascript简单复习资料
2010/06/29 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
在Python中使用第三方模块的教程
2015/04/27 Python
python实现图片处理和特征提取详解
2017/11/13 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
合作协议书范文
2014/08/20 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL