【问题标题】:Invalid Argument in IE 11 in Vue jsVue js中IE 11中的参数无效
【发布时间】:2019-12-10 07:19:41
【问题描述】:

我在 IE11 中收到下面列出的错误。代码在 Chrome、Mozilla 和 safari 中运行良好,但在 IE 中产生问题。

我的项目中有一个车库,用户可以在其中添加和移除车库中的汽车。当我从车库中取出汽车时,它显示错误。 “无效参数”

据我说,当我从部分中移除滑动器时,问题出在滑动器滑块上,当我点击移除到车库 http://prntscr.com/onfklt

时它工作正常

移除功能:

remove(id) {

    let vm = this;
    vm.to = vm.to-1;
    vm.total = vm.total-1;
    var resultModel=vm.$global.inArrayModel(id,vm.carModel);
    vm.model.garageDataArray=vm.$global.remove_grage(id,vm.model.garageDataArray,this);
    vm.carModel.splice(resultModel,1);
},

从全局变量中移除车库函数:

inArrayModel(id, carModel) {
  var length = carModel.length;
  for (var i = 0; i < length; i++) {
    if (carModel[i].model_id == id)
      return i;
    }
    return false;
},


remove_grage(id, garageData, snotifyObj) {
    var result = this.inArray(id, garageData);
    if (result != 'false') {
      garageData.splice(result, 1);
      localStorage.setItem("garage", JSON.stringify(garageData));
      this.onerror(snotifyObj.$snotify, snotifyObj.$store, 'Removed from Garage');
    }
    return garageData;
},

这是我的代码:

[Vue warn]: Error in nextTick: "Error: Invalid argument."
"Error: Invalid argument.
    at setTextContent (eval code:5718:3)
   at patchVnode (eval code:6317:7)
   at updateChildren (eval code:6178:9)
   at patchVnode (eval code:6304:29)
   at updateChildren (eval code:6178:9)
   at patchVnode (eval code:6304:29)
   at updateChildren (eval code:6178:9)
   at patchVnode (eval code:6304:29)
   at updateChildren (eval code:6178:9)
   at patchVnode (eval code:6304:29)"

【问题讨论】:

  • @Andreas 我已经更新了问题。请立即检查。
  • 在 DevTools 中,单击带有“setTextContent”的行 - 您将看到错误发生的位置。现在在此处设置一个断点并尝试从车库中移除另一辆车。你会明白为什么“setTextContent”的参数是无效的。
  • @IVOGELOV 在 IE 11 中,我们无法详细调试代码。当我点击“setTextContent”时没有任何反应,因为它没有链接到该行
  • 也许您可以在 CodeSandbox 上分享代码,以便我们在实际操作中对其进行故障排除?否则你的堆栈跟踪不是很有用:(

标签: javascript vue.js vuejs2 vue-component vuex


【解决方案1】:

认为这个链接回答了问题:

https://forum.vuejs.org/t/internet-explorer-garbage-collection-on-removed-nodes/17144

“如果有人发现这个问题,问题是我在替换其 innerHTML 之前没有清除其他元素的子元素。在覆盖之前删除它们的子元素,因为 Vue 无法保护自己免受 IE11 对数据绑定的草率处理指针。”

【讨论】:

    【解决方案2】:

    所以对我来说,问题是元素的 innerHtml 包含一些文本,但被非 vue 代码更改,导致“无效参数”。 IE11 中的错误。我建议通过在该元素上使用 :text-content.prop="yourText" 属性或 v-text="yourText" 属性设置 innerHtml 文本来解决此问题。

    IE11 生命周期结束:2022 年 6 月 15 日...等不及了。

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 2019-03-23
      • 2019-05-05
      • 2015-11-27
      • 1970-01-01
      • 2022-01-24
      • 2012-03-24
      • 2012-01-01
      相关资源
      最近更新 更多