This problem still exists in 5.6.6, and I've tried swapping dnn.controls.dnnmenu.js files from multiple other versions (5.6.7, 6.0.1, 6.1.3, etc.) with no resolution. Either the menus disappear if the user hits the Back button or the Refresh button in Firefox, or AJAX callbacks cause duplicate menus (toggling between the different "tabs" on the View Profile control, for example.) I fixed both by changing line 17 in the dnn.controls.dnnmenu.js file from 5.6.6 to the following obnoxious line:
if(this.rootNode!==null){if(this.container.childNodes.length <= 0) for(var i=0;i<this.rootNode.childNodeCount();i++)this.renderNode(this.rootNode.childNodes(i),this.container);this.addHandlers(document.body,{"click":this._bodyClick},this);}if(dnn.dom.browser.isType(dnn.dom.browser.Mozilla,dnn.dom.browser.Safari)==false) dnn.setVar(this.ns + '_json', '');},renderNode:function(node,ctr)
I've highlighted the two parts I changed.The second part that checks for browser type is the code suggested originally by Jason Sobell in this thread, which fixes the Back button/Refresh button issue. The first part checks for child elements in the menu container and skips looping through menu nodes and adding them if there are already child nodes present. This fixes the duplicate menus problem that exists in Firefox under certain AJAX calls, at least in MY site tested with the latest versions of IE, Firefox, and Chrome. YMMV, but hopefully this helps someone as I burned WAY too much non-billable time on this!