var BrowserMutationObserver = window.MutationObserver || window.WebKitMutationObserver if (BrowserMutationObserver) { //chrome18+, safari6+, firefox14+,ie11+,opera15 avalon.nextTick = function(callback) { //2-3ms var input = DOC.createElement("input") var observer = new BrowserMutationObserver(function(mutations) { mutations.forEach(function() { callback() }) }) observer.observe(input, { attributes: true }) input.setAttribute("value", Math.random()) } } else if (window.VBArray) { //IE下这个通常只要1ms,而且没有副作用,不会发现请求, //setImmediate如果只执行一次,与setTimeout一样要140ms上下 avalon.nextTick = function(callback) { var node = DOC.createElement("script") node.onreadystatechange = function() { callback() //在interactive阶段就触发 node.onreadystatechange = null root.removeChild(node) node = null } root.appendChild(node) } } else { avalon.nextTick = function(callback) { setTimeout(callback, 0) } }