关于iview 移除节点报错 的问题

新手上路,请多包涵

iview 报错内容:

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'. at eval (iview.js?0536:31530)

bV7x6e?w=821&h=334

错误截图

bV7x6o?w=895&h=134

阅读 4k
1 个回答
新手上路,请多包涵

原因:
node_modules > iview > src > components > spin.js
remove (cb) {

    spin.visible = false;
    setTimeout(function() {
        spin.$parent.$destroy();
        //这个地方少了一个这个节点判断,导致removeChild 里面的节点不存在,加上判断即可
        if (document.getElementsByClassName('ivu-spin-fullscreen')[0]) {
            document.body.removeChild(document.getElementsByClassName('ivu-spin-fullscreen')[0]);
        }
        cb();
    }, 500);
},

但是因为这个是源码,所以还同时需要修改打包后的文件:node_modules > iview > dist > iview.js

31529 行,改成如下:
if (document.getElementsByClassName('ivu-spin-fullscreen')[0]) {
            document.body.removeChild(document.getElementsByClassName('ivu-spin-fullscreen')[0]);
        }
        
        即可修复,这个地方源码部分不是很严谨,没有加判断,导致在连续调用iview.Spin.hide()时会出问题,原因很简单
        给iview提issue,但是报错,
  
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进