Framework7初始化

时间:2022-06-17 05:05:05
/**
* Framework7初始化
* 需引用jQuery
* author stumpx
*/ /*---------------------------函数---------------------------*/ /**
* 为空判断
* @param s
* @returns {boolean}
*/
function isEmpty(s) {
switch (typeof(s)) {
case 'string':
return !s.length;
break;
case 'array':
case 'object':
for (var i in s) return false;
return false;
return true;
break;
case 'undefined':
return true;
break;
default:
return !s;
break;
}
} /**
* 设置跨域
* */
function crossDomain(allow) {
if (!allow) return false;
var settings = {
crossDomain: !allow,
};
$.ajaxSetup(settings);
$$.ajaxSetup(settings);
return true;
}
/*---------------------------/函数---------------------------*/ /*tip插件*/
Framework7.prototype.plugins.tip = function(app) {
'use strict';
var $ = window.Dom7;
var t7 = window.Template7; app.tip = function(params) {
var defaults = {
title: 'tipTitle',
timeOut: 2000,
}; if (typeof params == 'string') {
var obj = {};
if (typeof arguments[0] == 'string') {
obj.title = arguments[0];
}
if (typeof arguments[1] == 'number') {
obj.timeOut = arguments[1];
}
params = obj || {};
} else if (typeof params == 'object') {
params = params || {};
} for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
} $('.tip-modal').remove(); var tipStr = '<div class="preloader-indicator-modal tip-modal"><span class="fg-white">' + params.title + '</span></div>'; $('body').append(tipStr);
$('.tip-modal').css('margin-left', -$('.tip-modal').outerWidth() / 2 + 'px'); setTimeout(function() {
$('.tip-modal').remove();
}, params.timeOut); return $('.tip-modal')[0];
};
}; /*dom操作对象*/
var $$ = Dom7;
/*初始化应用*/
var myApp = new Framework7({
modalTitle: '',
modalButtonOk: '确认',
modalButtonCancel: '取消',
modalPreloaderTitle: '加载中...',
cache: false,
material: false,
pushState: false,
swipePanel: 'left',
swipeBackPage: false,
swipePanelThreshold: 15,
domCache: false,
smartSelectBackText: '返回',
smartSelectPickerCloseText: '完成',
smartSelectPopupCloseText: '关闭',
swipePanelOnlyClose: true,
preloadPreviousPage: false,
uniqueHistory: false,
}); $.ajaxSetup({ cache: false });
$$.ajaxSetup({ cache: false }); /*初始化视图*/
var mainView = myApp.addView('.view-main', {
dynamicNavbar: true
}); /*ajax请求*/
$$(document).on('ajaxStart', function(e) {
if (e.detail.xhr.requestUrl.indexOf('autocomplete-languages.json') >= 0) {
return;
}
isShowLoading = true;
setTimeout(function() {
if (!!isShowLoading) {
myApp.showIndicator();
}
}, 300);
});
$$(document).on('ajaxComplete', function(e) {
isShowLoading = false;
if (e.detail.xhr.requestUrl.indexOf('autocomplete-languages.json') >= 0) {
return;
}
myApp.hideIndicator();
var res = e.detail.xhr.responseText;
if (res.match("^\{(.+:.+,*){1,}\}$")) {
res = $.parseJSON(res);
if (res.status == 0) {
myApp.alert(res.info, function() {
mainView.router.load({
url: res.url,
force: true,
ignoreCache: true,
reload: true,
});
});
}
} else {
if (!!res.length) {
$res = $('<div>' + res + '</div>');
/*动态工具栏*/
var $toolbar = $res.find('.toolbar').first();
if (!!$toolbar.length) {
if ($toolbar[0].localName == 'script') {
$toolbar = $($toolbar.html());
if (!!$toolbar.length) {
var $oldToolbar = $('.view-main .toolbar');
if ($oldToolbar.length) {
$oldToolbar.replaceWith($toolbar[0]);
} else {
$('.view-main').append($toolbar[0]);
}
}
}
}
/*动态侧边栏-左*/
var $panelLeft = $res.find('.panel-left').first();
if (!!$panelLeft.length) {
if ($panelLeft[0].localName == 'script') {
$panelLeft = $($panelLeft.html());
if (!!$panelLeft.length) {
var $oldPanelLeft = $('.panel-left');
if ($oldPanelLeft.length) {
$oldPanelLeft.html($panelLeft.html());
} else {
$('body').append($panelLeft[0]);
}
}
}
}
/*动态侧边栏-右*/
var $panelRight = $res.find('.panel-right').first();
if (!!$panelRight.length) {
if ($panelRight[0].localName == 'script') {
$panelRight = $($panelRight.html());
if (!!$panelRight.length) {
var $oldPanelRight = $('.panel-right');
if ($oldPanelRight.length) {
$oldPanelRight.html($panelRight.html());
} else {
$('body').append($panelRight[0]);
}
}
}
}
}
}
});
/*/ajax请求*/ /*显示隐藏导航栏、工具栏*/
$$(document).on('pageInit', function(e) {
var $page = $(e.detail.page.container);
if ($page.hasClass('no-navbar')) {
myApp.hideNavbar('.page-on-center .navbar');
/*$('.page-on-center .navbar').addClass('navbar-hidden');*/
} else {
myApp.showNavbar('.page-on-center .navbar');
/*$('.page-on-center .navbar').removeClass('navbar-hidden');*/
}
if ($page.hasClass('no-toolbar')) {
myApp.hideToolbar('.page-on-center .toolbar');
/*$('.page-on-center .toolbar').addClass('toolbar-hidden');*/
} else {
myApp.showToolbar('.page-on-center .toolbar');
/*$('.page-on-center .toolbar').removeClass('toolbar-hidden');*/
}
}); /*打开picker*/
$(document).on('click', '[open-picker]', function() {
var $picker = $($(this).attr('open-picker')).first();
if (!$picker.length) return;
if ($picker[0].localName == 'script') {
myApp.pickerModal($picker.html());
}
}); /*打开popup*/
$(document).on('click', '[open-popup]', function() {
var $popup = $($(this).attr('open-popup')).first();
if (!$popup.length) return;
if ($popup[0].localName == 'script') {
myApp.popup($popup.html());
}
});
/*打开popover*/
$(document).on('click', '[open-popover]', function() {
var $popover = $($(this).attr('open-popover')).first();
if (!$popover.length) return;
if ($popover[0].localName == 'script') {
myApp.popover($popover.html(), this);
}
}); /*打开alert*/
$(document).on('click', '[open-alert]', function() {
myApp.alert($(this).attr('open-alert'));
}); /*日期选择*/
$(document).on('focus touchstart', '.calendar', function() {
var $this = $(this);
var normal = {
closeOnSelect: true,
input: this,
dateFormat: 'yyyy-mm-dd',
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
monthNamesShort: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],
dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
};
if (!!this.value) {
normal.value = [this.value];
}
myApp.calendar($.extend({}, normal, $(this).data()));
}); /*下拉刷新*/
$(document).on('refresh', '.pull-to-refresh-content', function(e) {
var $this = $(this);
var url = $this.data('url');
mainView.router.load({
url: url,
force: true,
ignoreCache: true,
reload: true,
});
myApp.pullToRefreshDone();
}); /*加载更多*/
isInfiniteScroll = true;
$(document).on('infinite', '.page-shop-list .infinite-scroll', function(e) {
var $this = $(this);
var url = $this.data('url');
var nowPage = $this.data('now-page');
var lastPage = $this.data('last-page');
var infiniteScrollPreloaderEndStr = '<div class="content-block infinite-scroll-preloader">到底了!</div>';
if (!!isInfiniteScroll) {
isInfiniteScroll = false;
if (nowPage >= lastPage) {
isInfiniteScroll = true;
myApp.detachInfiniteScroll($$('.infinite-scroll'));
$this.find('.infinite-scroll-preloader').remove();
$this.append(infiniteScrollPreloaderEndStr);
return;
} else {
setTimeout(function() { $.ajax({
url: url,
type: 'POST',
async: false,
/*true:异步,false:同步*/
data: { p: nowPage + 1 },
success: function(res) {
if (!res.match("^\{(.+:.+,*){1,}\}$")) {
isInfiniteScroll = true;
var $res = $('<div>' + res + '</div>');
var $list = $res.find('.shop-list');
var nowPage = $res.find('[data-now-page]').data('now-page');
var lastPage = $res.find('[data-last-page]').data('last-page');
$this.data({
nowPage: nowPage,
lastPage: lastPage,
});
$this.find('.shop-list').append($list.html());
}
}
}); }, 150);
}
}
});