An active pseudo-class is applied while the user selects a link.
CSS1 was a bit ambiguous on this behavior: the “active” link is the one that is currently selected (for example, by clicking the mouse button) of the reader. ”Also, in CSS1: active there were mutually exclusive: links and: Visited. (And there wasn’t: hover pseudo-class).
CSS2 changed the situation, so the rules for: active can be applied simultaneously with: visited or: link. And the behavior was a little explained: ": the active pseudo-class is applied when the user activates the item. For example, between times the user presses the mouse button and releases it."
IMO, FF and others are better CSS2 than IE. But since the link to download the new page is supposed, IE could legitimately state that the link is still “active”, while the new page is loading, which is what happens.
You can see a similar counter-intuitive behavior in FF click a link, but the mouse from the link while holding down the mouse button. The link is not (new page not loaded), but the link remains in: active state. Chrome and Opera, on the other hand, deactivate the link, but at different times; Chrome, as soon as the mouse leaves the link area, Opera does not until the mouse button is released. IE behaves just like FF in this example. (Press Enter after dragging and clicking on the link, and you will see more differences in behavior.)
I would not call any of these differences “errors,” because of the ambiguity in the specification.
The only thing I can offer is accept that you cannot control every aspect of browser behavior. Users of different browsers have different behaviors, and if you start messing around with user expectations, you are on the wrong track.