why.xingtongworld.com项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
3.3 KiB

/**
Required. Ace's Basic File to Initiliaze Different Parts and Some Variables.
*/
//some basic variables
(function(undefined) {
if( !('ace' in window) ) window['ace'] = {}
if( !('helper' in window['ace']) ) window['ace'].helper = {}
if( !('vars' in window['ace']) ) window['ace'].vars = {}
window['ace'].vars['icon'] = ' ace-icon ';
window['ace'].vars['.icon'] = '.ace-icon';
ace.vars['touch'] = ('ontouchstart' in window);//(('ontouchstart' in document.documentElement) || (window.DocumentTouch && document instanceof DocumentTouch));
//sometimes the only good way to work around browser's pecularities is to detect them using user-agents
//though it's not accurate
var agent = navigator.userAgent
ace.vars['webkit'] = !!agent.match(/AppleWebKit/i)
ace.vars['safari'] = !!agent.match(/Safari/i) && !agent.match(/Chrome/i);
ace.vars['android'] = ace.vars['safari'] && !!agent.match(/Android/i)
ace.vars['ios_safari'] = !!agent.match(/OS ([4-9])(_\d)+ like Mac OS X/i) && !agent.match(/CriOS/i)
ace.vars['ie'] = window.navigator.msPointerEnabled || (document.all && document.querySelector);//8-11
ace.vars['old_ie'] = document.all && !document.addEventListener;//8 and below
ace.vars['very_old_ie'] = document.all && !document.querySelector;//7 and below
ace.vars['firefox'] = 'MozAppearance' in document.documentElement.style;
ace.vars['non_auto_fixed'] = ace.vars['android'] || ace.vars['ios_safari'];
//sometimes we try to use 'tap' event instead of 'click' if jquery mobile plugin is available
ace['click_event'] = ace.vars['touch'] && jQuery.fn.tap ? 'tap' : 'click';
})();
//some ace helper functions
(function($$ , undefined) {//$$ is ace.helper
$$.unCamelCase = function(str) {
return str.replace(/([a-z])([A-Z])/g, function(match, c1, c2){ return c1+'-'+c2.toLowerCase() })
}
$$.strToVal = function(str) {
var res = str.match(/^(?:(true)|(false)|(null)|(\-?[\d]+(?:\.[\d]+)?)|(\[.*\]|\{.*\}))$/i);
var val = str;
if(res) {
if(res[1]) val = true;
else if(res[2]) val = false;
else if(res[3]) val = null;
else if(res[4]) val = parseFloat(str);
else if(res[5]) {
try { val = JSON.parse(str) }
catch (err) {}
}
}
return val;
}
$$.getAttrSettings = function(elem, attr_list, prefix) {
if(!elem) return;
var list_type = attr_list instanceof Array ? 1 : 2;
//attr_list can be Array or Object(key/value)
var prefix = prefix ? prefix.replace(/([^\-])$/ , '$1-') : '';
prefix = 'data-' + prefix;
var settings = {}
for(var li in attr_list) if(attr_list.hasOwnProperty(li)) {
var name = list_type == 1 ? attr_list[li] : li;
var attr_val, attr_name = $$.unCamelCase(name.replace(/[^A-Za-z0-9]{1,}/g , '-')).toLowerCase()
if( ! ((attr_val = elem.getAttribute(prefix + attr_name)) ) ) continue;
settings[name] = $$.strToVal(attr_val);
}
return settings;
}
$$.scrollTop = function() {
return document.scrollTop || document.documentElement.scrollTop || document.body.scrollTop
}
$$.winHeight = function() {
return window.innerHeight || document.documentElement.clientHeight;
}
$$.redraw = function(elem, force) {
if(!elem) return;
var saved_val = elem.style['display'];
elem.style.display = 'none';
elem.offsetHeight;
if(force !== true) {
elem.style.display = saved_val;
}
else {
//force redraw for example in old IE
setTimeout(function() {
elem.style.display = saved_val;
}, 10);
}
}
})(ace.helper);