vue-Ie下踩坑20190820

开发的vue项目终于告一段落,终于是可以部署在测试服务器给客户看了,期间也是遇到各式各样的坑。

  1.有些bug在谷歌是在没问题的,在ie上就会暴露出来,因为其中一个模块设计多个类型资源的列表,所以写纯模板的vue是行不通的,所以考虑写rander或者是jsx,

    最终是选择了些jsx,rander当时写的时候还不是特别熟练。(不过看完vue-rander部分的源码,问题不大,还是要多多看源码)。

    其间往jsx中传入一个图片的地址,是对象中的一个属性。我传的文件的地址,一直给我报 vue Error in nextTick: "Error: 参数无效。",ie是真的牛逼,这都能检测的出来,

      导致我后续所以的字组件都没有渲染出来,请原谅我的无知,刚开始一直以为是ie11不支持jsx,现在想想确实脑洞有点大。

    所以下次遇见 vue Error in nextTick: "Error: 参数无效。" 一定要先检测传的数据是否有问题,ie并没有谷歌那么好的包容性。

  2.项目上是分前台和后台,前台并没有直接跳到后台的连接,所以是直接在流浪器上改变的连接地址,wtf,尽然不跳转。谷歌上是号的,这又是啥。

    所以就仔细分析一下这个问题,首先,ie上的vue-router连接是可以跳转的,所以说ie11是可以使用vue-router,也就是说我们使用this.$router.push 这个方法是可用的

    然而我们直接改变链接地址为什么不跳转,那么肯定是ie上这个有bug.既然我们直接改变地址他不跳转,那么我们是否可以监听一下地址,如果地址改变手动执行this.$router.push

    查了一下ie上确实是有方法监听ie地址改变的, window.addEventListener('hashchange', ()=>{},false),所以我们再最初的父组件mouted中调价这个监听。发生改变是在执行this.$router.push

 if (!!window.ActiveXObject || 'ActiveXObject' in window) {
      window.addEventListener('hashchange', () => {
        let currentPath = window.location.hash.slice(1)
        if (this.$route.path !== currentPath) {
            this.$router.push(currentPath)
        }
      }, false)
    }

  来源地址:https://www.jianshu.com/p/1e94f20f8672 

  3.iis上部署项目,因为项目在子文件夹下,所以不能指定默认文档,iis只能执行第一层的文件夹的文件作为默认文档,所以我们可以新建一个默认文档,然后在做一次跳转

  

<script>window.location.href='/static/index.html'</script>
原文地址:https://www.cnblogs.com/czkolve/p/11383371.html