|
230 | 230 | progress.id = 'nprogress';
|
231 | 231 | progress.innerHTML = Settings.template;
|
232 | 232 |
|
233 |
| - var bar = progress.querySelector(Settings.barSelector), |
234 |
| - perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), |
235 |
| - parent = document.querySelector(Settings.parent), |
236 |
| - spinner; |
| 233 | + |
| 234 | + |
| 235 | + var bar = progress.querySelector(Settings.barSelector), |
| 236 | + perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), |
| 237 | + parent = isDOM(Settings.parent) |
| 238 | + ? Settings.parent |
| 239 | + : document.querySelector(Settings.parent), |
| 240 | + spinner |
237 | 241 |
|
238 | 242 | css(bar, {
|
239 | 243 | transition: 'all 0 linear',
|
|
259 | 263 |
|
260 | 264 | NProgress.remove = function() {
|
261 | 265 | removeClass(document.documentElement, 'nprogress-busy');
|
262 |
| - removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent'); |
| 266 | + var parent = isDOM(Settings.parent) |
| 267 | + ? Settings.parent |
| 268 | + : document.querySelector(Settings.parent) |
| 269 | + removeClass(parent, 'nprogress-custom-parent') |
263 | 270 | var progress = document.getElementById('nprogress');
|
264 | 271 | progress && removeElement(progress);
|
265 | 272 | };
|
|
302 | 309 | * Helpers
|
303 | 310 | */
|
304 | 311 |
|
| 312 | + function isDOM (obj) { |
| 313 | + if (typeof HTMLElement === 'object') { |
| 314 | + return obj instanceof HTMLElement |
| 315 | + } |
| 316 | + return ( |
| 317 | + obj && |
| 318 | + typeof obj === 'object' && |
| 319 | + obj.nodeType === 1 && |
| 320 | + typeof obj.nodeName === 'string' |
| 321 | + ) |
| 322 | + } |
| 323 | + |
305 | 324 | function clamp(n, min, max) {
|
306 | 325 | if (n < min) return min;
|
307 | 326 | if (n > max) return max;
|
|
0 commit comments