Debugging error message: "A script on this page is causing Internet Explorer to run slowly"

One of my users is intermittently getting a dialog in IE 8 that says:

A script on this page is causing Internet Explorer to run slowly

This problem has been reported numerous times in the MSDN forums and other places on the web. For example:

So, this question is a duplicate of those and many others. But it is an intentional duplicate, because I don’t think any of those questions were answered in a way that helps a user (developer) to determine precisely what in his scenario causes the dialog to appear.

read more

Is it possible to terminate a running web worker?

I have a web worker running a time-consuming routine task with ajax-requests. Can I terminate them from a main thread not waiting for them to finish?

That’s how I spawn and terminate it:

$("button.parse-categories").click(function() {
    if (parseCategoriesActive==false) {
        parseCategoriesActive = true;
        parseCategoriesWorker = new Worker("parseCategories.js");


        $("button.parse-categories-cancel").click(function() {
            parseCategoriesWorker.terminate();
            parseCategoriesActive = false;
        });             
    }
});

This is the worker code:

function myAjax(url, async, callback) {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
            callback(xmlhttp.responseText);
        if (xmlhttp.readyState==4 && xmlhttp.status!=200) {
            self.postMessage("error");
            throw "error in ajax: "+xmlhttp.status;
        }
    }
    xmlhttp.open("GET", url, async);
    xmlhttp.send();
}

var parseCategoriesActive = true;
var counter = 0;
do {
    myAjax('parser.php', false, function(resp) {
        if (resp=='success')
            parseCategoriesActive = false;
        else {
            counter += Number(resp);
            self.postMessage(counter);
        }       
    });
} while (parseCategoriesActive==true);

read more

What does the expression &Proc.new do in a method?

I found usage of &Proc.new in the rails sources:

# rails/railties/lib/rails/engine.rb
def routes
  @routes ||= ActionDispatch::Routing::RouteSet.new
  @routes.append(&Proc.new) if block_given?
  @routes
end

I don’t understand how the expression &Proc.new works.

I wrote similar code and it failed:

def method_name
  &Proc.new if block_given?
end
proc = method_name{ puts 'Hello world!' }
proc.call

I received a syntax error:

read more