seajs兼容ie8
2016-02-01 12:39
453 查看
场景:js等静态资源存储在七牛云服务器;使用seajs加载静态资源。
存在问题:IE8对ajax跨域做了限制,在服务端不对跨域请求单独处理的情况下,在seajs中ajax无法获取到远程js文件的内容。
解决:修改seajs-wrapper-debug文件,首先去七牛请求静态资源,如果请求失败,再由应用服务器加载静态资源。采用这种方式同时能够解决,七牛服务器因为欠费等其它问题down机的问题,保证静态资源请求的稳定性。
// Helpers function xhr(url, callback) { //var r = global.ActiveXObject ? // new global.ActiveXObject("Microsoft.XMLHTTP") : // new global.XMLHttpRequest() ; //modified , 解决ie10跨域加载js问题。首先使用XMLHttpRequest,ActiveXObject是ie7之前版本 var r = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject("Microsoft.XMLHTTP") ; try{ r.open("GET", url, true) ; }catch (e){ return failoverxhr(url, callback) ; } r.onreadystatechange = function() { if (r.readyState === 4) { // Support local file if (r.status > 399 && r.status < 600) { failoverxhr(url, callback) ; }else { callback(r.responseText) } } } //发送请求结果 var result = null ; try{ result = r.send(null) ; }catch (e){ return failoverxhr(url, callback) ; } return result ; } /** * 静态资源请求失败的处理 */ function failoverxhr(url, callback){ var r = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject("Microsoft.XMLHTTP") ; url = getLocalAppUrl(url) ; console.log("use backup "+url); r.open("GET", url, true) ; r.onreadystatechange = function() { if (r.readyState === 4) { // Support local file if (r.status > 399 && r.status < 600) { seajs.emit("failover error", { uri: url , status: r.status }) ; }else { callback(r.responseText) } } } return r.send(null) ; } /** * 由本项目中获取请求的url */ function getLocalAppUrl(resourceURL) { //获取静态资源的uri var urlReg = /\/resources.*/ ; var uri = urlReg.exec(resourceURL) ; //如果配置了项目的url,则有url中请求静态资源 if(uri && window.resourceConfig && window.resourceConfig.path){ uri = window.resourceConfig.path + uri ; } return uri ; }
阅读更多
相关文章推荐
- ie8如何兼容ie6
- 兼容ie8的tab选项卡
- 有关IE8样式不兼容css样式问题处理方式--充分利用IE8
- 让Bootstrap 3兼容IE8浏览器
- 设置IE8兼容模式
- IE7,IE8与IE6兼容路上的痛苦
- CSS兼容:解决IE6、IE7和IE8的兼容问题
- IE8兼容IE7模式代码:X-UA-Compatible详解
- (转载)IE8+兼容经验小结
- IE8下兼容rgba颜色的半透明背景
- 解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 图片上传预览,兼容IE6,IE8
- 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 一个系统的base.css,兼容IE7,IE8,IE9,IE10,IE11,firefox,safari,谷歌,360,世界之窗等浏览器起的公共css
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- js可选择时分秒的日历时间控件代码下载,多浏览器IE8,9,10、谷歌chrome,火狐firefox等都是兼容的
- css3糖果风格按钮(ie8及以下不兼容)
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- css3 模拟 mac 的 菜单图标列表(兼容ie,但ie8及以下效果有差异) 分类: css3 button 按钮 面板 2014-02-12 14:21 741人阅读 评论(0) 收藏
- 让Bootstrap 3兼容IE8浏览器