| var $ = require('../internals/export'); |
| var global = require('../internals/global'); |
| var userAgent = require('../internals/user-agent'); |
| |
| var slice = [].slice; |
| var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check |
| |
| var wrap = function (scheduler) { |
| return function (handler, timeout /* , ...arguments */) { |
| var boundArgs = arguments.length > 2; |
| var args = boundArgs ? slice.call(arguments, 2) : undefined; |
| return scheduler(boundArgs ? function () { |
| // eslint-disable-next-line no-new-func |
| (typeof handler == 'function' ? handler : Function(handler)).apply(this, args); |
| } : handler, timeout); |
| }; |
| }; |
| |
| // ie9- setTimeout & setInterval additional parameters fix |
| // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers |
| $({ global: true, bind: true, forced: MSIE }, { |
| // `setTimeout` method |
| // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout |
| setTimeout: wrap(global.setTimeout), |
| // `setInterval` method |
| // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval |
| setInterval: wrap(global.setInterval) |
| }); |