在進行專案時發生一個套件衝突的小問題,
當我想在 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