|
15 | 15 | </template>
|
16 | 16 | <script>
|
17 | 17 | /* eslint-disable no-console */
|
18 |
| - /* eslint-disable import/extensions */ |
19 | 18 | import Spinner from './Spinner';
|
20 |
| - import { supportsPassive } from '../utils/supportsPassive.js'; |
21 | 19 |
|
22 | 20 | const LOOP_CHECK_TIMEOUT = 1000; // the timeout for check infinite loop
|
23 | 21 | const LOOP_CHECK_MAX_CALLS = 10; // the maximum number of continuous calls
|
|
59 | 57 | 'more details: https://github.com/PeachScript/vue-infinite-loading/issues/55#issuecomment-316934169',
|
60 | 58 | ].join('\n'),
|
61 | 59 | };
|
| 60 | + const evt3rdArg = (() => { |
| 61 | + let result = false; |
| 62 | +
|
| 63 | + try { |
| 64 | + const arg = Object.defineProperty({}, 'passive', { |
| 65 | + get() { |
| 66 | + result = { passive: true }; |
| 67 | + }, |
| 68 | + }); |
| 69 | +
|
| 70 | + window.addEventListener('testpassive', arg, arg); |
| 71 | + window.remove('testpassive', arg, arg); |
| 72 | + } catch (e) { /* */ } |
| 73 | +
|
| 74 | + return result; |
| 75 | + })(); |
62 | 76 |
|
63 | 77 | export default {
|
64 | 78 | name: 'InfiniteLoading',
|
|
133 | 147 | }.bind(this);
|
134 | 148 |
|
135 | 149 | setTimeout(this.scrollHandler, 1);
|
136 |
| - this.scrollParent.addEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 150 | + this.scrollParent.addEventListener('scroll', this.scrollHandler, evt3rdArg); |
137 | 151 |
|
138 | 152 | this.$on('$InfiniteLoading:loaded', (ev) => {
|
139 | 153 | this.isFirstLoad = false;
|
|
156 | 170 | this.$forceUpdate();
|
157 | 171 | });
|
158 | 172 |
|
159 |
| - this.scrollParent.removeEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 173 | + this.scrollParent.removeEventListener('scroll', this.scrollHandler, evt3rdArg); |
160 | 174 |
|
161 | 175 | if (!ev || ev.target !== this) {
|
162 | 176 | console.warn(WARNINGS.STATE_CHANGER);
|
|
168 | 182 | this.isComplete = false;
|
169 | 183 | this.isFirstLoad = true;
|
170 | 184 | this.inThrottle = false;
|
171 |
| - this.scrollParent.addEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 185 | + this.scrollParent.addEventListener('scroll', this.scrollHandler, evt3rdArg); |
172 | 186 | setTimeout(this.scrollHandler, 1);
|
173 | 187 | });
|
174 | 188 |
|
|
203 | 217 | */
|
204 | 218 | deactivated() {
|
205 | 219 | this.isLoading = false;
|
206 |
| - this.scrollParent.removeEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 220 | + this.scrollParent.removeEventListener('scroll', this.scrollHandler, evt3rdArg); |
207 | 221 | },
|
208 | 222 | activated() {
|
209 |
| - this.scrollParent.addEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 223 | + this.scrollParent.addEventListener('scroll', this.scrollHandler, evt3rdArg); |
210 | 224 | },
|
211 | 225 | methods: {
|
212 | 226 | /**
|
|
291 | 305 | },
|
292 | 306 | destroyed() {
|
293 | 307 | if (!this.isComplete) {
|
294 |
| - this.scrollParent.removeEventListener('scroll', this.scrollHandler, supportsPassive ? { passive: true } : false); |
| 308 | + this.scrollParent.removeEventListener('scroll', this.scrollHandler, evt3rdArg); |
295 | 309 | }
|
296 | 310 | },
|
297 | 311 | };
|
|
0 commit comments