成都网站建设设计

将想法与焦点和您一起共享

React、Vue在IE的兼容问题-创新互联

Vue在IE10中无法获取父元素

潢川ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

原始

let parent = this.$el.parentElement

解决

这玩意还能咋解决 用原生呗 class、id都行

let parent = document.getElementsByClassName('top-chart')[0]

router-link在IE中没有作用

原始

解决

  • 方案1

  • 由于URL的hashChange浏览器没有响应 故我们加个判断

if (
 '-ms-scroll-limit' in document.documentElement.style && 
 '-ms-ime-align' in document.documentElement.style
) { // detect it's IE11
 window.addEventListener("hashchange", function(event) {
 var currentPath = window.location.hash.slice(1);
 if (store.state.route.path !== currentPath) {
 router.push(currentPath)
 }
 }, false)
}
复制代码

如果还没有解决 换到方案二

  • 方案2

  • 如果浏览器直接没有触发到hashChange 那么我们手动调用history的API


handleLink () {
 this.$router.push({name:'a'})
}
复制代码

Excel表单导出异常

原始

原先通过axios的拦截器来获取响应内容的格式 然后进行下载 但在IE表现不一致 由于IE浏览器res.request.responseURL属性不存在 导致出错

const downloadUrl = url => {
 let iframe = document.createElement('iframe');
 iframe.style.display = 'none';
 iframe.src = url;
 iframe.onload = function () {
 document.body.removeChild(iframe);
 };
 document.body.appendChild(iframe);
};
// 拦截二进制响应流
if (res.headers && (res.headers['content-type'] === 'application/vnd.ms-excel;charset=UTF-8' || res.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || res.headers['content-type'] === 'application/octet-stream;charset=UTF-8')) {
downloadUrl(res.request.responseURL);
return
}
复制代码

解决

丢弃已有的轮子 闭门造车写个原生的Ajax

utils.exportFiles = (type = 'GET', url = null) => {
 var xhr = null
 if (window.XMLHttpRequest) { // Mozilla 浏览器
 xhr = new XMLHttpRequest()
 } else {
 if (window.ActiveXObject) {
 try {
 xhr = new ActiveXObject('Microsoft.XMLHTTP')
 } catch (e) {
 try {
 xhr = new ActiveXObject('Msxml2.XMLHTTP')
 } catch (e) {
 }
 }
 }
 }
 xhr.open(type, url, true)
 xhr.responseType = 'blob'
 if (type === 'POST') {
 xhr.setRequestHeader('Content-type', 'application/json')
 }
 xhr.onload = function (res) {
 var contentDisposition = xhr.getResponseHeader('content-disposition')
 var contentType = xhr.getResponseHeader('content-type')
 var filename = contentDisposition.split(';')[2]
 // eslint-disable-next-line no-eval
 eval(filename)
 filename = decodeURI(filename)
 if (this.status === 201) {
 var blob = this.response
 if (typeof window.navigator.msSaveBlob !== 'undefined') {
 // IE 浏览器进行下载
 window.navigator.msSaveBlob(blob, filename)
 } else {
 // 非浏览器进行下载
 var downloadUrl = document.createElement('a')
 downloadUrl.download = filename
 downloadUrl.style.display = 'none'
 downloadUrl.href = URL.createObjectURL(blob)
 document.body.appendChild(downloadUrl)
 downloadUrl.click()
 URL.revokeObjectURL(downloadUrl.href)
 document.body.removeChild(downloadUrl)
 }
 } else {
 console.log('导出错误')
 }
 }
 xhr.send()
}
复制代码

React中remove()不兼容

解决

找到该节点的父节点 使用removeChild()方法删除

node.parentNode.removeChild(node)

flex在IE中子元素宽度无效

原始

问题出现在想做一个横向滚动 Apple官网有类似需求


 
 
 
复制代码

当node-item的宽度设定 且个数超过node-list的可容纳个数时 子元素的宽度失效 所有的子元素都将显示出来

解决

给父元素 即node-list动态设置宽度


 
 
复制代码

IE隐藏滚动条

解决

 overflow: scroll;
 -ms-scroll-chaining: chained;
 -ms-overflow-style: none;
 -ms-content-zooming: zoom;
 -ms-scroll-rails: none;
 -ms-content-zoom-limit-min: 100%;
 -ms-content-zoom-limit-max: 500%;
 -ms-scroll-snap-type: proximity;
 -ms-scroll-snap-points-x: snapList(100%, 200%, 300%, 400%, 500%);
 -ms-overflow-style: none;
复制代码

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:React、Vue在IE的兼容问题-创新互联
分享网址:http://chengdu.cdxwcx.cn/article/ccpijj.html

其他资讯