diff --git a/script.coffee b/script.coffee index a1410fa38..6791e8584 100644 --- a/script.coffee +++ b/script.coffee @@ -372,26 +372,25 @@ $.extend $, return open: (url) -> (GM_openInTab or window.open) url, '_blank' - queueTask: + queueTask: (-> # inspired by https://www.w3.org/Bugs/Public/show_bug.cgi?id=15007 - (-> - taskQueue = [] - execTask = -> - task = taskQueue.shift() - func = task[0] - args = Array::slice.call task, 1 - func.apply func, args - if window.MessageChannel - taskChannel = new MessageChannel() - taskChannel.port1.onmessage = execTask - -> - taskQueue.push arguments - taskChannel.port2.postMessage null - else # XXX Firefox - -> - taskQueue.push arguments - setTimeout execTask, 0 - )() + taskQueue = [] + execTask = -> + task = taskQueue.shift() + func = task[0] + args = Array::slice.call task, 1 + func.apply func, args + if window.MessageChannel + taskChannel = new MessageChannel() + taskChannel.port1.onmessage = execTask + -> + taskQueue.push arguments + taskChannel.port2.postMessage null + else # XXX Firefox + -> + taskQueue.push arguments + setTimeout execTask, 0 + )() globalEval: (code) -> script = $.el 'script', textContent: code