Skip to content

Commit 39a3e53

Browse files
committed
fix(core): check for swiper.el in destroy queue
fixes #7530
1 parent 5737f03 commit 39a3e53

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

src/core/classes/removeClasses.mjs

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export default function removeClasses() {
22
const swiper = this;
33
const { el, classNames } = swiper;
4+
if (!el || typeof el === 'string') return;
45

56
el.classList.remove(...classNames);
67
swiper.emitContainerClasses();

src/core/core.mjs

+9-3
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,12 @@ class Swiper {
655655
// Cleanup styles
656656
if (cleanStyles) {
657657
swiper.removeClasses();
658-
el.removeAttribute('style');
659-
wrapperEl.removeAttribute('style');
658+
if (el && typeof el !== 'string') {
659+
el.removeAttribute('style');
660+
}
661+
if (wrapperEl) {
662+
wrapperEl.removeAttribute('style');
663+
}
660664
if (slides && slides.length) {
661665
slides.forEach((slideEl) => {
662666
slideEl.classList.remove(
@@ -680,7 +684,9 @@ class Swiper {
680684
});
681685

682686
if (deleteInstance !== false) {
683-
swiper.el.swiper = null;
687+
if (swiper.el && typeof swiper.el !== 'string') {
688+
swiper.el.swiper = null;
689+
}
684690
deleteProps(swiper);
685691
}
686692
swiper.destroyed = true;

src/core/events/index.mjs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const events = (swiper, method) => {
1515
const capture = !!params.nested;
1616
const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
1717
const swiperMethod = method;
18+
if (!el || typeof el === 'string') return;
1819

1920
// Touch Events
2021
document[domMethod]('touchstart', swiper.onDocumentTouchStart, { passive: false, capture });

src/modules/a11y/a11y.mjs

+5-3
Original file line numberDiff line numberDiff line change
@@ -364,9 +364,11 @@ export default function A11y({ swiper, extendParams, on }) {
364364
const document = getDocument();
365365
document.removeEventListener('visibilitychange', onVisibilityChange);
366366
// Tab focus
367-
swiper.el.removeEventListener('focus', handleFocus, true);
368-
swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
369-
swiper.el.removeEventListener('pointerup', handlePointerUp, true);
367+
if (swiper.el && typeof swiper.el !== 'string') {
368+
swiper.el.removeEventListener('focus', handleFocus, true);
369+
swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
370+
swiper.el.removeEventListener('pointerup', handlePointerUp, true);
371+
}
370372
}
371373

372374
on('beforeInit', () => {

src/modules/autoplay/autoplay.mjs

+4-2
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,10 @@ export default function Autoplay({ swiper, extendParams, on, emit, params }) {
238238
};
239239

240240
const detachMouseEvents = () => {
241-
swiper.el.removeEventListener('pointerenter', onPointerEnter);
242-
swiper.el.removeEventListener('pointerleave', onPointerLeave);
241+
if (swiper.el && typeof swiper.el !== 'string') {
242+
swiper.el.removeEventListener('pointerenter', onPointerEnter);
243+
swiper.el.removeEventListener('pointerleave', onPointerLeave);
244+
}
243245
};
244246

245247
const attachDocumentEvents = () => {

0 commit comments

Comments
 (0)