As explained in my earlier post, i used Ext.data.ScriptTag proxy for some cross-domain AJAX data retrieval. Testing in IE6, I kept getting an “Invalid Argument” error in IE traced to this line in the code. A search on the Sencha forum turned up only this post, with no good solution posted. I traced the problem to the this.head.removeChild lines, for some reason, IE6 chokes on it. The fix is quite simple, i overrode the function to use parentNode.removeChild:
Ext.override(Ext.data.ScriptTagProxy, { destroyTrans : function(trans, isLoaded){ try { this.head.removeChild(document.getElementById(trans.scriptId)); } catch(e) { //IE6 does not like removeChild() to be called directly from the parent element document.getElementById(trans.scriptId).parentNode.removeChild(document.getElementById(trans.scriptId)) } clearTimeout(trans.timeoutId); if(isLoaded){ window[trans.cb] = undefined; try{ delete window[trans.cb]; }catch(e){} }else{ // if hasn't been loaded, wait for load to remove it to prevent script error window[trans.cb] = function(){ window[trans.cb] = undefined; try{ delete window[trans.cb]; }catch(e){} }; } } });
Leave a Reply