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 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
防止文件缓存的js代码
Jan 10 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
Jul 08 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
移除AngularJS下URL中的#字符的方法
Jun 19 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
基于jquery实现的鼠标悬停提示案例
Dec 11 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
Sep 10 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
不安全的常用的js写法
2009/09/15 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
python列表使用实现名字管理系统
2019/01/30 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
对祖国的寄语大全
2014/04/11 职场文书
学校教研活动总结
2014/07/02 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
大学生毕业评语
2014/12/31 职场文书
幼师小班个人总结
2015/02/12 职场文书
人民检察院起诉书
2015/05/20 职场文书
小学毕业感言100字
2015/07/30 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
Redis全局ID生成器的实现
2022/06/05 Redis