在进行专案时发生一个套件冲突的小问题,
当我想在 Bootstrap Modal 上使用 vue-loading-overlay 的 loading 时,会报错:Maximum call stack size exceeded.
中途发现拿掉 .modal
身上的 tabindex="-1"
属性就能够 work。
后来和小伙伴们更进一步查了一下,原来发生这种情况是因为:
vue-loading-overlay 不允许任何 html 元素在 loading 出现时处于 focus 状态。
而 Bootstrap Modal 预设初始化时是 focus 状态。
所以,最根本的解决方法应该是:
在 .modal
身上加上 data-focus="false"
。
.
.
不过为什么拿掉 tabindex="-1"
属性也够 work,就不太懂了。
如果没有指定,它的默认值为 0。
tabindex="0" ,表示元素是可聚焦的,
并且可以通过键盘导航来聚焦到该元素,它的相对顺序是当前处于的 DOM 结构来决定的。
—— mdn web docs
这表示 .modal
还是有可能处于 focus 状态。
如果有各位大大知道为什么请再告诉我,存粹好奇,谢谢。
.
不过能解决就好了。 ;)
参考连结:
https://github.com/ankurk91/vue-loading-overlay/issues/26
https://getbootstrap.com/docs/5.2/components/modal/#options
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex