(function(window,undefined){
var _toString = {}.toString,
_is,
_writeScript,
_listUrl,
_scriptMap = {
method_url : {},// method --> url < method : url > < 1 : 1 >
url_method : {},// url --> method < url : [method,method] > < 1 : n >
visited : {},
writted : {},
wait_write:[]
},
_isReady = false,
alfred = {
author : "alfred",
version : 1.01,
global : this,
doc : this.document,
reset : function(it){alfred.global[it]=alfred;},
log : function()
{
if(window.console && console.log){
return console.log(arguments)
}
},
isNumber : function(it){return _is(it,/^\[object number\]$/)},
isString : function(it){return _is(it,/^\[object string\]$/)},
isFunction : function(it){return _is(it,/^\[object function\]$/)},
isObject : function(it){return _is(it,/^\[object object\]$/)},
isArray : function(it){return _is(it,/^\[object array\]$/)},
isBoolean : function(it){return typeof it ==='boolean'},
isDom : function(it){return _is(it,/^\[object html\w+\]$/)},
require : function(method){
var m2u = _scriptMap.method_url,
u2m = _scriptMap.url_method,
r;
if(!(m2u[method])){throw "Error : you need setMethod first"}
if (!_scriptMap.visited[m2u[method][0]] && !_scriptMap.writted[m2u[method][0]]) {
//haven't be visited or write
_scriptMap.visited[m2u[method][0]] = true;
//use an beautiful code in here
for(; m2u[method][1].length &&(r=m2u[method][1].shift());)
{
require(r);
}
_listUrl();
}
},
setMethod : function(url,method,rely){
var i, method = alfred.isArray(method)? method:[method],
rely = alfred.isArray(rely)?rely:[rely];
if (url && !_scriptMap.url_method[url]){
_scriptMap.url_method[url] = method;
for (;method.length&&(i=method.shift());) {
_scriptMap.method_url[i] = {"0" : url, "1" : rely};
}
return this;
}
throw "Error : you are setMethod in an old method";
},
extend : function(){
var deep = false,
len,
options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1;
len = arguments.length;
if (!len)
{
return this;
}
if(alfred.isBoolean(target))
{
deep = arguments[0];
to = arguments[1];
i = 2;
}
if (!(alfred.isObject(target) || alfred.isFunction(target))) {
target = {};
}
if (len = i)
{
target = this;
--i;
}
for (;i<len;i++) {
if ((options=arguments[i])!==null)
{
for (name in options) {
copy = options[name];
src = target[name];
if(src){throw "Becareful : you are rewrite the "+_handle+"."+name+"!"}
if (copy===target) {continue}
if (deep && copy && (alfred.isObject(copy) || (copyIsArray = alfred.isArray(copy))))
{
if (copyIsArray)
{
copyIsArray = false;
clone = src && alfred.isArray(src) ? src : [];
}
else
{
clone = src && alfred.isObject(src) ? src : [];
}
target[ name ] = alfred.extend( deep, clone, copy );
}
else if ( copy !== undefined )
{
target[name] = copy;
}
};
};
};
},
ready : function(callback){
_checkReady(callback);
},
each : function(arg,callback){
for(var i in arg){
if(arg[i])
{
callback.call(arg[i],i);
}
}
return arg;
}
};
//私有函数开始
_is = function(it,type){
return type.test(_toString.call(it).toLowerCase());
};
_waitReady = function(){
if(document.readyState != "loaded" && document.readyState != "complete")
{
var time = setTimeout(arguments.callee,0);
return;
}
clearTimeout(time);
}
_checkReady = function(callback){
if(document.addEventListener)
{
document.addEventListener("DOMContentLoaded",function(){
_waitReady();
callback();
});
}
if(document.attachEvent)
{
document.attachEvent( "onreadystatechange", function(){
_waitReady();
callback();
} );
}
};
_listUrl = function(){
var l = _scriptMap.visited,i;
for(i in l){
_scriptMap.wait_write.push(i);
}
_scriptMap.wait_write.reverse();
_writeScript();
};
_writeScript = function(){
var head = document.getElementsByTagName("head").item(0),len = _scriptMap.wait_write.length;
for (var i;_scriptMap.wait_write.length&&(i=_scriptMap.wait_write.shift());) {
var script = document.createElement("script"),
url = i || "";
script.setAttribute("async",true);
script.setAttribute("type","text/javascript");
script.setAttribute("src",url);
head.appendChild(script);
_scriptMap.writted[url] = true;
};
};
window.alfred = alfred;
})(window)
相关推荐
项目需要、在网上查找angularjs支持ie低版本的问题(主要是windows7下只有IE8)整理了一个小demo 主要两点 1、ng-app="myApp" id="test11" 加上id="XXX" 加入以下代码注册到页面上 angular.element(document)....
IE7-IE8 站点 兼容性 Pdf IE7-IE8 站点 兼容性 Pdf
如果服务器是自己的话,可以在服务器上定义一个自订标头来为它们的网站预设一个特定的文件兼容性模式。这个特定的方法取决于你的网站服务器。 录入,下列的 web.config文件使Microsoft Internet Information ...
ie6 ie7 ff浏览器兼容 border:2px solid #00f; /*IE、ff的属性*/ border:2px solid #090\9; /* IE6/7/8的属性 */ border:2px solid #F90\0; /* IE8支持 */ *border:2px solid #F00; /* IE6、7支持 */ _border:2...
IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决IE兼容性解决
EDGE怎样兼容IE的网站访问,以下是切换方法 IE 模式支持以下 Internet Explorer 功能: 所有文档模式和企业模式,ActiveX 控件(例如 Java 或 Silverlight),浏览器帮助程序对象,影响安全区域设置和内核 模式的 ...
这是一个对IE8及以下做前端兼容的文件工具包,使用时可参考如下实例在文件里引入即可 <!--对于ie6到ie8做兼容,兼容h5,css3等新特性--> <!--[if (gte IE 6)&(lte IE 8)]> [removed][removed] [removed]...
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 ...这句话的意思是强制使用IE7模式来解析网页代码!
IE6, IE7, IE8 CSS 兼容速查表
lodash兼容ie6-ie8 数组深拷贝
css3的 border-radius 为了兼容ie8浏览器所用到的插件以及实例。为什么要50个字节啊,竟然不能设置成免费。。
致WEB前端开发者:IE6-IE11兼容性问题列表及解决办法
各种浏览器的兼容性和CSS HACK的写法,让你不再为IE6和各种浏览器的兼容性发愁,非常方便!
IE6-IE11兼容性问题列表及解决办法,收集了目前IE6-IE11常见得问题解决方法
CSS完美兼容IE6IE7FF的通用方法
网页设计ie调试工具,兼容ie5.5,ie6,ie7,ie8
IE6-IE11兼容性问题列表及解决办法.rar
兼容 IE6、IE7、IE8 样式 不兼容 兼容 txt
第一节:IE7-IE8更新 3 1. 如果缺少结束标记的 P 元素后跟 TABLE、FORM、NOFRAMES 或 NOSCRIPT 元素,会自动添加结束标记。 3 2. 支持格式正确的有效标记,不再支持格式错误的 HTML。 4 第二节: IE8-IE9更新 5 1. 表...
IE6-IE9兼容性问题列表及解决办法 详细描述历代ie版本兼容性问题及解决方案