MSOLayout_GetRealOffset. Running through page’s elements using DOM made me think about the custom Web Controls we have made. I have suspected overriding one of the render methods improperly causing the error. Still after stripping the Master Page from all the custom controls didn’t help.
The last remaining piece of customization left were the various CSS files delivered by the designer. Run of ideas I removed it as well and… voillá – the bug was gone and the Web Parts could have been moved again!
After some research I have discovered that the error has been caused by the position property used with anything else than static. The error occurs while processing parent elements of the selected Web Part. The exception is being caused by uncaught attempt of reading the offset property of a
null object. It seems like altering the position property causes the parent object (container) to be set to
This behaviour occurs only in Internet Explorer: it’s the only browser that allows dragging & dropping Web Parts. As there are not many client side script debug tools for Internet Explorer available, it’s quite difficult to find out the exact reason of this error at this point.
The best you can do at this moment is to avoid relative of absolute positioned wrappers containing Web Part zones. While fixing the chrome I have replaced the implemented position functionality with float. It works perfectly and you can’t see any difference in the positioning of elements on the page. Another option is to set this property only in the View Mode. You have to note that the editing experience will vary (depends on the complexity of your chrome) from the view experience.