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 相关文章推荐
js调用css属性写法
Sep 21 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
Jan 11 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
js实现兼容IE、Firefox的图片缩放代码
Dec 08 Javascript
jQuery改变form表单的action,并进行提交的实现代码
May 25 Javascript
Google 地图叠加层实例讲解
Aug 06 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
JS实现前端缓存的方法
Sep 21 Javascript
Vue 框架之动态绑定 css 样式实例分析
Nov 14 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
详解vue-cli3多页应用改造
Jun 04 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 购物车的例子
2009/05/04 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
澳大利亚网上书店:QBD
2021/01/09 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
临时租车协议范本
2014/09/23 职场文书
个人向公司借款协议书
2014/10/09 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
三八节祝酒词
2015/08/11 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
Python图像处理之图像拼接
2021/04/28 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android
JS实现九宫格拼图游戏
2022/06/28 Javascript