BUG: Error message when you visit a Web page or interact with a Web application in Internet Explorer: “Operation aborted”

Here is a bug that i came to recently while working with:

var d = document.createElement(“div”);
document.body.appendChild(d);

This bug is only on IE and it’s really annoying one. There is a fix provided by Microsoft, you can take a look at it here.

It is a pretty comprehensive and complete article but there is one thing missing in there. The state that the problem is caused

This problem occurs because a child container HTML element contains script code that tries to modify the parent container element of the child container. The script code tries to modify the parent container element by using either the innerHTML method or the appendChild method.

The solution is

To work around this problem, write script blocks that only modify closed containers or that only modify the script’s immediate container element. To do this, you can use a placeholder to close the target container, or you can move the script block into the container that you want to modify.

That’s a pretty good solution, but what if i don’t want to do that, or can’t handle a code that would generate something like that in the body, e.g When developing in ASP.NET using Master Pages. You must develop some specific module to have a handle in the master page body to be able to call your javascript in the body text itself.

Here is a quick fix that works pretty fine and easy to implement.

In your Page where you want to call the javascript create a DIV element in the body/content ( <div id=”ie_fix”></div> )
With this done you can now modify your javascript to be like that:

var d = document.createElement(“div”);

if(is_ie) //This is a browser check have to code here.
{
var ie_fix = document.getElementById(“ie_fix”);
ie_fix.appendChild(d)
}else
document.body.appendChild(d);

This is a quick fix that should help you waste/avoid unnecessary recoding. This has been Tested on IE 7 – Running on Windows Vista.

Leave a Reply

Your email address will not be published. Required fields are marked *