css加载失败(css加载失败怎么补救)

使用过CSS3属性的同学都知道,CSS3属性都需要带各浏览器的前缀,甚至到现在,依然还有很多属性需要带前缀css加载失败。这是为什么呢?

css加载失败(css加载失败怎么补救)

我的理解是,浏览器厂商以前就一直在实施CSS3,但它还未成为真正的标准。为此,当一些CSS3样式语法还存在波动时,它们提供针对浏览器的前缀。现在主要流行的浏览器内核主要有:

css加载失败(css加载失败怎么补救)

Trident内核:主要代表为IE浏览器

Gecko内核:主要代表为Firefox

Presto内核:主要代表为Opera

Webkit内核:产要代表为Chrome和Safari

而这些不同内核的浏览器,CSS3属性(部分需要添加前缀的属性)对应需要添加不同的前缀,也将其称之为浏览器的私有前缀,添加上私有前缀之后的CSS3属性可以说是对应浏览器的私有属性:

Trident内核:前缀为-ms

Gecko内核:前缀为-moz

Presto内核:前缀为-o

Webkit内核:前缀为-webkit

来看一个简单的示例,早期写一个圆角border-radius,需要这样写:

.box {

-moz-border-radius: 5px;

-webkit-border-radius: 5px;

-o-border-radius: 5px;

border-radius: 5px;

}

这样编写代码,无形之中给前端人员增加了不少工作量,于是开始有人在讨论这个问题“如何在编写CSS时不需要添加浏览器的私有前缀,又能让浏览器识别?”

-prefix-free

为了解决手工书写前缀的问题,最早的一个解决方案是由Lea Verou提供的一个-prefix-free脚本。你只需要在你的.html文件中插入一个prefixfree.js文件(可以是文档任何地方),建议把这个脚本文件放在样式表之后。

添加这个脚本之后,使用CSS3的属性时,只需书写标准样式即可。但是这种做法将所有压力交给了客户端来处理。如此一来页面解析压力就大了,性能会打一定的折扣,并且一旦脚本加载失败,那么就会出现浏览器无法正常渲染CSS3的样式风格。

prefixfree脚本仅在IE9+、Opera10+、Firefox3.5+、Safari4+得到支持。

ext在IE中出现对象不支持此属性和方法的错误

Ext.onReady(function() {

Ext.Msg.alert(\'提示\', \'逗号分隔参数列表\'); //这种方式非常常见的

});

看看这个效果能不能用,如果实在不能的话就是

var aaa;ext.onready(function() { aaa = function() {}});

ext.onready外面声明名字在内部封装,才可以在外部应用否则没有办法

希望能对你有所帮助

应该还是<script></script>的文件没加载对,你看看位置,确定是相对路径下的 ext/adapter/ext/ext-base.js 和 ext/ext-all.js 吗

Bmap未定义,怎么会出现这个错误

使用的api是<script type=\"text/javascript\" src=\"/api?v=1.2\"></script>,单独一个页面正常。使用ajax调用该页面后报错ReferenceError: BMap is not defined。

使用:<load href =\"__PUBLIC__/Js/jquery-1.9.1.js\" />

将ajax页面的地图api放到主页面调用,正常。

搜到一个解决方案,亲测ok了,类似于官网异步加载百度地图的方式加一个回掉函数就ok了。!function(mapInit) {var script = document.createElement(\"script\");script.type = \"text/javascript\";script.src = \"/api?v=2.0&ak=\"+ App.BMapAk +\"&callback=mapinit\";window[\'mapinit\'] = function() {mapInit();};document.head.appendChild(script);}(function() {// 这里使用BMap});给百度js 后面的上一个回调方法 mapinit