Side navigation
#1130 closed enhancement (fixed)
Opened April 17, 2007 11:08AM UTC
Closed April 27, 2007 02:47AM UTC
JS error in IE and FireFox in ASP.NET 2.0 after reloading page
Reported by: | halex | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.1.3 |
Component: | event | Version: | 1.1.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I am providing solution for this Threas http://dev.jquery.com/ticket/999
In original function was only at the end:
// A fallback to window.onload, that will always work jQuery.event.add( window, "load", jQuery.ready );
but this is not good for IE and Firefox (problem with ASP.NET 2.0 described in this article...)
Replace this function on row number 1468 with this modified by me and it will work:
new function(){ jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + "submit,keydown,keypress,keyup,error").split(","), function(i,o){ // Handle event binding jQuery.fn[o] = function(f){ return f ? this.bind(o, f) : this.trigger(o); }; }); // If Mozilla is used if ( jQuery.browser.mozilla || jQuery.browser.opera ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); // A fallback to window.onload, that will always work jQuery.event.add( window, "load", jQuery.ready ); } // If IE is used, use the excellent hack by Matthias Miller // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited else if ( jQuery.browser.msie ) { // Only works if you document.write() it document.write("<scr" + "ipt id=__ie_init defer=true " + "src=//:></script>"); // Use the defer script hack var script = document.getElementById("__ie_init"); // script does not exist if jQuery is loaded dynamically if ( script ) script.onreadystatechange = function() { if ( this.readyState != "complete" ) return; this.parentNode.removeChild( this ); jQuery.ready(); }; // Clear from memory script = null; // A fallback to window.onload, that will always work window.oldLoad = window.oldLoad; window.onload = function(event) { jQuery.ready(); window.oldLoad(event); window.oldLoad = null; } // If Safari is used } else if ( jQuery.browser.safari ) { // Continually check to see if the document.readyState is valid jQuery.safariTimer = setInterval(function(){ // loaded and complete are both valid states if ( document.readyState == "loaded" || document.readyState == "complete" ) { // If either one are found, remove the timer clearInterval( jQuery.safariTimer ); jQuery.safariTimer = null; // and execute any waiting functions jQuery.ready(); } }, 10); // A fallback to window.onload, that will always work jQuery.event.add( window, "load", jQuery.ready ); } };
Best regards
Aleksandar Hajduković
Attachments (0)
Change History (1)
Changed April 27, 2007 02:47AM UTC by comment:1
component: | ajax → event |
---|---|
resolution: | → fixed |
status: | new → closed |
In the latest SVN we have moved to using DOM 2 event handlers which will prevent these collisions from happening.