macUI/js/mac.js

970 lines
37 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Created by Yuri2 on 2017/7/10.
*/
window.Win10 = {
_version:'v1.1.2.4',
_debug:true,
_bgs:{
main:'',
mobile:'',
},
_countTask: 0,
_newMsgCount:0,
_animated_classes:[],
_animated_liveness:0,
_switchMenuTooHurry:false,
_lang:'unknown',
_iframeOnClick :{
resolution: 200,
iframes: [],
interval: null,
Iframe: function() {
this.element = arguments[0];
this.cb = arguments[1];
this.hasTracked = false;
},
track: function(element, cb) {
this.iframes.push(new this.Iframe(element, cb));
if (!this.interval) {
var _this = this;
this.interval = setInterval(function() { _this.checkClick(); }, this.resolution);
}
},
checkClick: function() {
if (document.activeElement) {
var activeElement = document.activeElement;
for (var i in this.iframes) {
var eid=undefined;
if((eid=this.iframes[i].element.id) && !document.getElementById(eid)){
delete this.iframes[i];
continue;
}
if (activeElement === this.iframes[i].element) { // user is in this Iframe
if (this.iframes[i].hasTracked === false) {
this.iframes[i].cb.apply(window, []);
this.iframes[i].hasTracked = true;
}
} else {
this.iframes[i].hasTracked = false;
}
}
}
}
},
_iframe_click_lock_children:{},
_renderBar:function () {
//调整任务栏项目的宽度
if(this._countTask<=0){return;} //防止除以0
var btns=$("#win10_btn_group_middle>.btn");
btns.css('width',('calc('+(1/this._countTask*100)+'% - 1px )'))
},
_handleReady:[],
_hideShortcut:function () {
var that=$("#win10 #win10-shortcuts .shortcut");
that.removeClass('animated flipInX');
that.addClass('animated flipOutX');
},
_showShortcut:function () {
var that=$("#win10 #win10-shortcuts .shortcut");
that.removeClass('animated flipOutX');
that.addClass('animated flipInX');
},
_checkBgUrls:function () {
var loaders=$('#win10>.img-loader');
var flag=false;
if(Win10.isSmallScreen()){
if(Win10._bgs.mobile){
loaders.each(function () {
var loader=$(this);
if(loader.attr('src')===Win10._bgs.mobile && loader.hasClass('loaded')){
Win10._setBackgroundImg(Win10._bgs.mobile);
flag=true;
}
});
if(!flag){
//没找到加载完毕的图片
var img=$('<img class="img-loader" src="'+Win10._bgs.mobile+'" />');
$('#win10').append(img);
Win10._onImgComplete(img[0],function () {
img.addClass('loaded');
Win10._setBackgroundImg(Win10._bgs.mobile);
})
}
}
}else{
if(Win10._bgs.main){
loaders.each(function () {
var loader=$(this);
if(loader.attr('src')===Win10._bgs.main && loader.hasClass('loaded')){
Win10._setBackgroundImg(Win10._bgs.main);
flag=true;
}
});
if(!flag){
//没找到加载完毕的图片
var img=$('<img class="img-loader" src="'+Win10._bgs.main+'" />');
$('#win10').append(img);
Win10._onImgComplete(img[0],function () {
img.addClass('loaded');
Win10._setBackgroundImg(Win10._bgs.main);
})
}
}
}
},
_startAnimate:function () {
setInterval(function () {
var classes_lenth=Win10._animated_classes.length;
var animated_liveness=Win10._animated_liveness;
if(animated_liveness===0 || classes_lenth===0 || !$("#win10-menu").hasClass('opened')){return;}
$('#win10-menu>.blocks>.menu_group>.block').each(function () {
if(!$(this).hasClass('onAnimate') && Math.random()<=animated_liveness){
var that=$(this);
var class_animate = Win10._animated_classes[Math.floor((Math.random()*classes_lenth))];
that.addClass('onAnimate');
setTimeout(function () {
that.addClass(class_animate);
setTimeout(function () {
that.removeClass('onAnimate');
that.removeClass(class_animate);
},3000);
},Math.random()*2*1000)
}
})
},1000);
},
_onImgComplete:function (img, callback) {
if(!img){return;}
var timer = setInterval(function() {
if (img.complete) {
callback(img);
clearInterval(timer);
}
}, 50)
},
_setBackgroundImg:function (img) {
$('#win10').css('background-image','url('+img+')')
},
_settop:function (layero) {
if(!isNaN(layero)){
layero=this.getLayeroByIndex(layero);
}
//置顶窗口
var max_zindex=0;
$(".win10-open-iframe").each(function () {
z=parseInt($(this).css('z-index'));
$(this).css('z-index',z-1);
if(z>max_zindex){max_zindex=z;}
});
layero.css('z-index',max_zindex+1);
},
_checkTop:function () {
var max_index=0,max_z=0,btn=null;
$("#win10_btn_group_middle .btn.show").each(function () {
var index=$(this).attr('index');
var layero=Win10.getLayeroByIndex(index);
var z=layero.css('z-index');
if(z>max_z){
max_index=index;
max_z=z;
btn=$(this);
}
});
this._settop(max_index);
$("#win10_btn_group_middle .btn").removeClass('active');
if(btn){
btn.addClass('active');
}
},
//渲染右键
_renderContextMenu:function (x,y,menu,trigger) {
this._removeContextMenu();
if(menu===true){return;}
var dom = $("<div class='win10-context-menu'><ul></ul></div>");
$('#win10').append(dom);
var ul=dom.find('ul');
for(var i=0;i<menu.length;i++){
var item=menu[i];
if(item==='|'){
ul.append($('<hr/>'));
continue;
}
if(typeof(item)==='string'){
ul.append($('<li>'+item+'</li>'));
continue;
}
if(typeof(item)==='object'){
var sub=$('<li>'+item[0]+'</li>');
ul.append(sub);
sub.click(trigger,item[1]);
continue;
}
}
//修正坐标
if(x+150>document.body.clientWidth){x-=150}
if(y+dom.height()>document.body.clientHeight){y-=dom.height()}
dom.css({
top:y,
left:x,
});
},
_removeContextMenu:function () {
$('.win10-context-menu').remove();
},
_closeWin:function (index) {
$("#win10_" + index).remove();
layer.close(index);
Win10._checkTop();
Win10._countTask--;//回退countTask数
Win10._renderBar();
},
_fixWindowsHeightAndWidth:function(){
//此处代码修正全屏切换引起的子窗体尺寸超出屏幕
var opens=$('.win10-open-iframe');
var clientHeight=document.body.clientHeight;
opens.each(function () {
var layero_opened=$(this);
var height=layero_opened.css('height');
height=parseInt(height.replace('px',''));
if (height+40>=clientHeight){
layero_opened.css('height',clientHeight-40);
layero_opened.find('.layui-layer-content').css('height',clientHeight-83);
layero_opened.find('.layui-layer-content iframe').css('height',clientHeight-83);
}
})
},
/**
* 原 win10_bind_open_windows 子窗口事件自动绑定插件
* @author:vG
* @修订:Yuri2
* @version:2.0.1
* 说明: 所有#win10下的元素加入类win10-open-window即可自动绑定openUrl函数无须用onclick手动绑定
*/
_bind_open_windows:function () {
// 注册事件委派 打开url窗口
$('#win10').on('click', '.win10-open-window', function() {
//>> 获取当前点击的对象
$this = $(this);
//>> 判断url地址是否为空 如果为空 不予处理
if($this.data('url') !== "") {
//>> 获取弹窗标题
var title = $this.data('title')||'',
areaAndOffset;
//>> 判断是否有标题图片
var bg=$this.data('icon-bg')?$this.data('icon-bg'):'';
if($this.data('icon-image')) {
//>> 加入到标题中
title = '<img class="icon '+bg+'" src="' + $this.data('icon-image') + '"/>' + title;
}
if($this.data('icon-font')) {
//>> 加入到标题中
title = '<i class="fa fa-fw fa-'+$this.data('icon-font')+' icon '+bg+'"></i>' + title;
}
if(!title && $this.children('.icon').length===1 && $this.children('.title').length===1){
title = $this.children('.icon').prop("outerHTML")+$this.children('.title').html();
}
//>> 判断是否需要 设置 区域宽度高度
if($this.data('area-offset')) {
areaAndOffset = $this.data('area-offset');
//>> 判断是否有分隔符
if(areaAndOffset.indexOf(',')!==-1){
areaAndOffset = eval(areaAndOffset);
}
}
//>> 调用win10打开url方法
Win10.openUrl($this.data('url'), title, areaAndOffset);
}
})
},
_init:function () {
//获取语言
this._lang=(navigator.language || navigator.browserLanguage).toLowerCase();
$("#win10_btn_win").click(function () {
Win10.commandCenterClose();
Win10.menuToggle();
});
$("#win10_btn_command").click(function () {
Win10.menuClose();
Win10.commandCenterToggle();
});
$("#win10 .desktop").click(function () {
Win10.menuClose();
Win10.commandCenterClose();
});
$('#win10').on('click',".notice .btn_close_msg", function () {
var msg = $(this).parents('.notice');
console.log(msg);
$(msg).addClass('animated slideOutRight');
setTimeout(function () {
msg.remove()
}, 500)
});
//消息界面切换
$('#win10_command_center').on('click',".command-header .tab-today", function () {
if (!$(this).hasClass('active')) {
$('#win10_command_center .command-body.msgs').hide();
$('#win10_command_center .command-body.today').show();
$(this).addClass('active').siblings('div').removeClass('active');
}
});
//消息界面切换
$('#win10_command_center').on('click',".command-header .tab-msg", function () {
if (!$(this).hasClass('active')) {
$('#win10_command_center .command-body.today').hide();
$('#win10_command_center .command-body.msgs').show();
$(this).addClass('active').siblings('div').removeClass('active');
}
});
$('#win10_btn_command_center_clean_all').click(function () {
var msgs=$('#win10_command_center .msg');
msgs.addClass('animated slideOutRight');
setTimeout(function () {
msgs.remove()
}, 1500);
setTimeout(function () {
Win10.commandCenterClose();
}, 1000);
});
$("#win10_btn_show_desktop").click(function () {
$("#win10 .desktop").click();
Win10.hideWins();
});
$("#win10-menu-switcher").click(function () {
if(Win10._switchMenuTooHurry){return;}
Win10._switchMenuTooHurry=true;
var class_name='win10-menu-hidden';
var list=$("#win10-menu>.list");
var blocks=$("#win10-menu>.blocks");
var toggleSlide=function (obj) {
if(obj.hasClass(class_name)){
obj.addClass('animated slideInLeft');
obj.removeClass('animated slideOutLeft');
obj.removeClass(class_name);
}else{
setTimeout(function () {
obj.addClass(class_name);
},450);
obj.addClass('animated slideOutLeft');
obj.removeClass('animated slideInLeft');
}
};
toggleSlide(list);
toggleSlide(blocks);
setTimeout(function () {
Win10._switchMenuTooHurry=false;
},520)
});
$("#win10_btn_group_middle").click(function () {
$("#win10 .desktop").click();
});
$(document).on('click', '.win10-btn-refresh', function () {
var index = $(this).attr('index');
var iframe = Win10.getLayeroByIndex(index).find('iframe');
iframe.attr('src', iframe.attr('src'));
});
$(document).on('click', '.win10-btn-change-url', function () {
var index = $(this).attr('index');
var iframe = Win10.getLayeroByIndex(index).find('iframe');
layer.prompt({
title: Win10.lang('编辑网址','Edit URL'),
formType: 2,
skin:'win10-layer-open-browser',
value: iframe.attr('src'),
area: ['500px', '200px'],
zIndex:99999999999
}, function (value, i) {
layer.close(i);
layer.msg(Win10.lang('请稍候...','Hold on please...'),{time:1500},function () {
iframe.attr('src', value);
});
});
});
$(document).on('mousedown','.win10-open-iframe',function () {
var layero=$(this);
Win10._settop(layero);
Win10._checkTop();
});
$('#win10_btn_group_middle').on('click','.btn_close',function () {
var index = $(this).parent().attr('index') ;
Win10._closeWin(index);
});
$('#win10-menu .list').on('click','.item',function () {
var e=$(this);
if(e.hasClass('has-sub-down')){
$('#win10-menu .list .item.has-sub-up').toggleClass('has-sub-down').toggleClass('has-sub-up');
$("#win10-menu .list .sub-item").slideUp();
}
if(e.next().hasClass('sub-item')){
e.toggleClass('has-sub-down').toggleClass('has-sub-up');
}
while (e.next().hasClass('sub-item')){
e.next().slideToggle();
e=e.next();
}
});
$("#win10-btn-browser").click(function () {
// var area = ['100%', (document.body.clientHeight - 40) + 'px'];
// var offset = ['0', '0'];
layer.prompt({
title: Win10.lang('访问网址','Visit URL'),
formType: 2,
value: '',
skin:'win10-layer-open-browser',
area: ['300px', '150px'],
zIndex:99999999999
}, function (value, i) {
layer.close(i);
layer.msg(Win10.lang('请稍候...','Hold on please...'),{time:1500},function () {
Win10.openUrl(value,value);
});
});
});
setInterval(function () {
//重新写mac时间
var myDate = new Date();
var week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")[myDate.getDay()];
var hour=myDate.getHours();
var mins=myDate.getMinutes();if (mins<10){mins='0'+mins}
if(hour < 6){hours='凌晨'+hour;}
else if (hour < 9){hours='早上'+hour;}
else if (hour < 12){hours='上午'+hour;}
else if (hour < 14){hours='中午'+(hour-12);}
else if (hour < 17){hours='下午'+(hour-12);}
else if (hour < 19){hours='傍晚'+(hour-12);}
else if (hour < 22){hours='晚上'+(hour-12);}
else {hours='深夜'+(hour-12)}
$("#win10_btn_time").html(week+hours+':'+mins);
},1000);
//离开前警告
document.body.onbeforeunload = function(event){
var rel = Win10.lang( '系统可能不会保存您所做的更改','The system may not save the changes you have made.');
if(!window.event){
event.returnValue=rel;
}else{
window.event.returnValue=rel;
}
};
Win10.buildList();//预处理左侧菜单
Win10._startAnimate();//动画处理
Win10.renderShortcuts();//渲染图标
$("#win10-shortcuts").removeClass('shortcuts-hidden');//显示图标
Win10._showShortcut();//显示图标
Win10.renderDocks();//渲染DOCK
//窗口改大小,重新渲染
$(window).resize(function() {
Win10.renderShortcuts();
Win10._checkBgUrls();
if(!Win10.isSmallScreen()) Win10._fixWindowsHeightAndWidth(); //2017年11月14日修改加入了if条件
Win10.renderDocks();
});
//细节
$(document).on('focus',".win10-layer-open-browser textarea",function () {
$(this).attr('spellcheck','false');
});
$(document).on('keyup',".win10-layer-open-browser textarea",function (e) {
if(e.keyCode===13){
$(this).parent().parent().find('.layui-layer-btn0').click();
}
});
//打广告
setTimeout(function () {
console.log(Win10.lang('本页由Win10-UI强力驱动\n更多信息http://win10ui.yuri2.cn \nWin10-UI,轻松打造别具一格的后台界面 ','The page is strongly driven by Win10-UI.\nFor more info: http://win10ui.yuri2.cn.\n Win10-UI, easy to create a unique background interface.'))
},2000);
//点击清空右键菜单
$(document).click(function (event) {
if(!event.button)
Win10._removeContextMenu();
});
//禁用右键的右键
$(document).on('contextmenu','.win10-context-menu',function (e) {
e.preventDefault();
e.stopPropagation();
});
//设置默认右键菜单
Win10.setContextMenu('#win10',true);
Win10.setContextMenu('#win10>.desktop',[
['<i class="fa fa-fw fa-star"></i> 收藏本页',function () {
var url = window.location;
var title = document.title;
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("360se") > -1) {
layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!','Your browser does not support, please press Ctrl+D to manual collection!'));
}
else if (ua.indexOf("msie 8") > -1) {
window.external.AddToFavoritesBar(url, title); //IE8
}
else if (document.all) {
try{
window.external.addFavorite(url, title);
}catch(e){
layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!','Your browser does not support, please press Ctrl+D to manual collection!'));
}
}
else if (window.sidebar) {
window.sidebar.addPanel(title, url, "");
}
else {
layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!','Your browser does not support, please press Ctrl+D to manual collection!'));
}
}],
['<i class="fa fa-fw fa-window-maximize"></i> '+Win10.lang('进入全屏','Enable Full Screen'),function () {Win10.enableFullScreen()}],
['<i class="fa fa-fw fa-window-restore"></i> '+Win10.lang('退出全屏','Disable Full Screen'),function () {Win10.disableFullScreen()}],
'|',
['<i class="fa fa-fw fa-info-circle"></i> '+Win10.lang('关于','About Us'),function () {Win10.aboutUs()}],
]);
Win10.setContextMenu('#win10_btn_group_middle',[
['<i class="fa fa-fw fa-window-maximize"></i> '+Win10.lang('全部显示','Show All Windows'),function () {Win10.showWins()}],
['<i class="fa fa-fw fa-window-minimize"></i> '+Win10.lang('全部隐藏','Hide All Windows'),function () {Win10.hideWins()}],
['<i class="fa fa-fw fa-window-close"></i> '+Win10.lang('全部关闭','Close All Windows'),function () {Win10.closeAll()}],
]);
//处理消息图标闪烁
setInterval(function () {
var btn=$("#win10-msg-nof.on-new-msg");
if(btn.length>0){
btn.toggleClass('fa-commenting-o');
}
},600);
//绑定快捷键
$("body").keyup(function (e) {
if (e.ctrlKey)
{
switch (e.keyCode){
case 37://left
$("#win10_btn_win").click();
break;
case 38://up
Win10.showWins();
break;
case 39://right
$("#win10_btn_command").click();
break;
case 40://down
Win10.hideWins();
break;
}
}
});
/**
* WIN10-UI v1.1.2.2 桌面舞台支持补丁
* WIN10-UI v1.1.2.2之后的版本不需要此补丁
* @usage 直接引用即可需要jquery
* @author Yuri2
*/
if($("#win10-desktop-scene").length<1) {
$("#win10-shortcuts").css({
position: 'absolute',
left: 0,
top: 30,
'z-index': 100,
});
$("#win10 .desktop").append("<div id='win10-desktop-scene' style='width: 100%;height: calc(100% - 30px);position: absolute;left: 0;top: 30px; z-index: 0;background-color: transparent;'></div>")
}
//属性绑定
Win10._bind_open_windows();
},
setBgUrl:function (bgs) {
this._bgs=bgs;
this._checkBgUrls();
},
menuClose: function () {
$("#win10-menu").removeClass('opened');
$("#win10-menu").addClass('hidden');
this._showShortcut();
$(".win10-open-iframe").removeClass('hide');
},
menuOpen: function () {
$("#win10-menu").addClass('opened');
$("#win10-menu").removeClass('hidden');
this._hideShortcut();
$(".win10-open-iframe").addClass('hide');
},
menuToggle: function () {
if(!$("#win10-menu").hasClass('opened')){
this.menuOpen();
}else{
this.menuClose();
}
},
commandCenterClose: function () {
$("#win10_command_center").addClass('hidden_right');
this._showShortcut();
$(".win10-open-iframe").removeClass('hide');
},
commandCenterOpen: function () {
$("#win10_command_center").removeClass('hidden_right');
this._hideShortcut();
$(".win10-open-iframe").addClass('hide');
$("#win10-msg-nof").removeClass('on-new-msg fa-commenting-o');
},
renderShortcuts:function () {
var h=parseInt(($("#win10 #win10-shortcuts")[0].offsetHeight-60)/100);
var x=0,y=0;
$("#win10 #win10-shortcuts .shortcut").each(function () {
$(this).css({
left:x*82+10,
top:y*100+10,
});
y++;
if(y>=h){
y=0;
x++;
}
});
},
//渲染DOCK
renderDocks:function () {
var cell_width=60;
var width=document.body.clientWidth ;
var docks=$("#footer .dock li");
var max_num=parseInt(width/cell_width)-1;
for (var i = 0; i < docks.length; i++) {
if (i>max_num) {
docks.eq(i).css('display','none');
}else{
docks.eq(i).css('display','list-item');
}
}
if(width>768){
$("#footer .dock li a img").hover(
function(){
$(this).parent('a').prev().css('display','flex');
},
function(){
$(this).parent('a').prev().css('display','none');
}
);
}else{
$("#footer .dock li a img").hover(function(){
$(this).parent('a').prev().css('display','none');
});
}
},
commandCenterToggle: function () {
if($("#win10_command_center").hasClass('hidden_right')){
this.commandCenterOpen();
}else{
this.commandCenterClose();
}
},
newMsg: function (title,content,handle_click,app_name='提示消息',app_icon='<img src="./img/icon/weather.png" class="notice-header-icon-img" />',is_del=true) {
var msg = '<div class="notice">' +
'<div class="notice-header">' +
'<span class="notice-header-icon">'+app_icon+'</span>' +
'<span class="notice-header-title">'+app_name+'</span>';
if (is_del) {
msg += '<span class="btn_close_msg fa fa-times-circle"></span>';
}
msg +='</div>' +
'<div class="notice-body">' +
'<div class="msg">' +
'<div class="title">' + title +'</div>'+
'<div class="content">' + content + '</div>' +
'</div></div></div>';
var e = $(msg);
$("#win10_command_center .msgs").prepend(e);
e.find('.content:first,.title:first').click(function () {
if(handle_click){
handle_click(e);
}
});
layer.tips(Win10.lang('新消息:','New message:')+title, '#win10_btn_command', {
tips: [1, '#3c6a4a'],
time: 3000
});
if($("#win10_command_center").hasClass('hidden_right')){
$("#win10-msg-nof").addClass('on-new-msg');
}
},
getLayeroByIndex: function (index) {
return $('#' + 'layui-layer' + index)
},
isSmallScreen: function (size) {
if (!size) {
size = 768
}
var width = document.body.clientWidth;
return width < size;
},
enableFullScreen: function () {
var docElm = document.documentElement;
//W3C
if (docElm.requestFullscreen) {
docElm.requestFullscreen();
}
//FireFox
else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen();
}
//Chrome等
else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen();
}
//IE11
else if (docElm.msRequestFullscreen) {
document.body.msRequestFullscreen();
}
},
disableFullScreen: function () {
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
},
buildList:function () {
$("#win10-menu .list .sub-item").slideUp();
$("#win10-menu .list .item").each(function () {
if($(this).next().hasClass('sub-item')){
$(this).addClass('has-sub-down');
$(this).removeClass('has-sub-up');
}
})
},
openUrl: function (url, title,areaAndOffset) {
if(this._countTask>12){
layer.msg("您打开的太多了,歇会儿吧~");
return false;
}else{
this._countTask++;
}
if(!url){url='404'}
url=url.replace(/(^\s*)|(\s*$)/g, "");
var preg=/^(https?:\/\/|\.\.?\/|\/\/?)/;
if(!preg.test(url)){
url='http://'+url;
}
if (!url) {
url = '//yuri2.cn';
}
if (!title) {
title = url;
}
var area,offset;
if (this.isSmallScreen() || areaAndOffset==='max') {
area = ['100%', (document.body.clientHeight - 30) + 'px'];
offset = ['30px', '0'];
}else if(typeof areaAndOffset ==='object'){
area=areaAndOffset[0];
offset=areaAndOffset[1];
}else {
area = ['80%', '80%'];
var topset, leftset;
topset = parseInt($(window).height());
topset = (topset - (topset * 0.8)) / 2 - 31;
leftset = parseInt($(window).width());
leftset = (leftset - (leftset * 0.8)) / 2 - 120;
offset = [Math.round((this._countTask % 10 * 20) + topset) + 'px', Math.round((this._countTask % 10 * 20 + 100) + leftset) + 'px'];
}
var index = layer.open({
type: 2,
shadeClose: true,
shade: false,
maxmin: true, //开启最大化最小化按钮
title: title,
content: url,
area: area,
offset: offset,
isOutAnim: false,
skin:'win10-open-iframe',
cancel: function (index, layero) {
$("#win10_" + index).remove();
Win10._checkTop();
Win10._countTask--;//回退countTask数
Win10._renderBar();
},
min: function (layero) {
layero.hide();
$("#win10_" + index).removeClass('show');
Win10._checkTop();
return false;
},
full:function (layero) {
layero.find('.layui-layer-min').css('display','inline-block');
layero_opened.css('margin-top',30);
},
});
$('#win10_btn_group_middle .btn.active').removeClass('active');
var btn = $('<div id="win10_' + index + '" index="' + index + '" class="btn show active"><div class="btn_title">' + title + '</div><div class="btn_close fa fa-close"></div></div>');
var layero_opened=Win10.getLayeroByIndex(index);
layero_opened.css('z-index',Win10._countTask+813);
Win10._settop(layero_opened);
//重新定义菜单布局
layero_opened.find('.layui-layer-setwin').prepend('<a class="win10-btn-refresh" index="' + index + '" href="#"></a>');
//菜单排列倒序
layero_opened.find(".layui-layer-setwin>a").each(function(){
$(this).prependTo(layero_opened.find(".layui-layer-setwin"));
})
layero_opened.find('.layui-layer-setwin .layui-layer-max').click(function () {
setTimeout(function () {
var height=layero_opened.css('height');
height=parseInt(height.replace('px',''));
if (height>=document.body.clientHeight){
layero_opened.css('height',height-30);
layero_opened.find('.layui-layer-content').css('height',height-72);
layero_opened.find('.layui-layer-content iframe').css('height',height-72);
}
},300);
});
$("#win10_btn_group_middle").append(btn);
Win10._renderBar();
btn.click(function () {
var index = $(this).attr('index');
var layero = Win10.getLayeroByIndex(index);
var settop=function () {
//置顶窗口
var max_zindex=0;
$(".win10-open-iframe").each(function () {
z=parseInt($(this).css('z-index'));
$(this).css('z-index',z-1);
if(z>max_zindex){max_zindex=z;}
});
layero.css('z-index',max_zindex+1);
};
if ($(this).hasClass('show')) {
if($(this).hasClass('active')){
$(this).removeClass('active');
$(this).removeClass('show');
Win10._checkTop();
layero.hide();
}else{
$('#win10_btn_group_middle .btn.active').removeClass('active');
$(this).addClass('active');
Win10._settop(layero);
}
} else {
$(this).addClass('show');
$('#win10_btn_group_middle .btn.active').removeClass('active');
$(this).addClass('active');
Win10._settop(layero);
layero.show();
}
});
Win10._iframeOnClick.track(layero_opened.find('iframe:first')[0], function() {
if(Object.getOwnPropertyNames(Win10._iframe_click_lock_children).length===0){
Win10._settop(layero_opened);
Win10._checkTop();
}else{
console.log('click locked');
}
});
this.menuClose();
this.commandCenterClose();
return index;
},
closeAll: function() {
$(".win10-open-iframe").remove();
$("#win10_btn_group_middle").html("");
Win10._countTask = 0;
Win10._renderBar();
},
setAnimated:function (animated_classes,animated_liveness) {
this._animated_classes=animated_classes;
this._animated_liveness=animated_liveness;
},
exit:function () {
layer.confirm(Win10.lang('确认要关闭本页吗?','Are you sure you want to close this page?'), {icon: 3, title:Win10.lang('提示','Prompt')}, function(index){
document.body.onbeforeunload = function(){};
window.location.href="about:blank";
window.close();
layer.close(index);
layer.alert(Win10.lang('哎呀,好像失败了呢。','Ops...There seems to be a little problem.'), {
skin: 'layui-layer-lan'
,closeBtn: 0
});
});
},
lang:function (cn,en) {
return this._lang==='zh-cn'||this._lang==='zh-tw'?cn:en;
},
aboutUs: function() {
//关于我们
layer.open({
type: 1,
closeBtn: 1, //不显示关闭按钮
anim: 2,
skin: 'win10-open-iframe',
title: 'MAC-UI '+this._version,
shadeClose: true, //开启遮罩关闭
area: ['320px', '200px'], //宽高
content: '<div style="padding: 10px;font-size: 12px">' +
'<p>支持组件:layer、jquery、animated.css、font-awesome</p>' +
'<p>木子的忧伤、尤里2号©版权所有</p>' +
'<p>作者邮箱:yuri2peter@qq.com</p>' +
'</div>'
});
},
setContextMenu:function (jq_dom, menu) {
if(typeof (jq_dom)==='string'){
jq_dom=$(jq_dom);
}
jq_dom.unbind('contextmenu');
jq_dom.on('contextmenu', function(e) {
if(menu){
Win10._renderContextMenu(e.clientX,e.clientY,menu,this);
if (e.cancelable) {
// 判断默认行为是否已经被禁用
if (!e.defaultPrevented) {
e.preventDefault();
}
}
e.stopPropagation();
}
});
},
hideWins:function () {
$('#win10_btn_group_middle>.btn.show').each(function () {
var index = $(this).attr('index');
var layero = Win10.getLayeroByIndex(index);
$(this).removeClass('show');
$(this).removeClass('active');
layero.hide();
})
},
showWins:function () {
$('#win10_btn_group_middle>.btn').each(function () {
var index = $(this).attr('index');
var layero = Win10.getLayeroByIndex(index);
$(this).addClass('show');
layero.show();
});
Win10._checkTop();
},
getDesktopScene:function () {
return $("#win10-desktop-scene");
},
onReady:function (handle) {
Win10._handleReady.push(handle);
}
};
$(function () {
Win10._init();
for(var i in Win10._handleReady){
var handle=Win10._handleReady[i];
handle();
}
});