On 2/4/07, Van <[EMAIL PROTECTED]> wrote:
> It is definitely an interaction of FireBug 1.0 in the environment and
> making a *synchronous* AJAX call to load dialog content in Firefox 1.5 or 2.0.

More analysis by one of my peers has traced this back to an issue with
the version of Prototype we are using. So, I think the appropriate
thing is for me to pursue this further on whatever support list exists
for Prototype. In case you are wondering though, the following is our
analysis that leads us to believe it is a Prototype issue.

Below is the significant call stack (in reverse order, most local
context on top) that occurs when you hit anything that brings up the
dialog, in this case, the feeback link.  As I vaguely understand it,
when we hit the link, we send an Ajax request (xa-FeedbackSetup) that
retrieves the HTML that should go in the dialog.  It then tries to
create a Window dialog with that HTML.  Notice the method I've
indicated with "***":

------------------
[window.js:407]         Window._createWindow
[window.js:68]          Window.prototype.initialize ("feedbackDialogId")
[prototype.js:20]       Class.create
[window.js:1069]        _openDialog  (This is where it calls "new Window")
[windows.js:986]        Dialog.confirm
[window.js:1081] Dialog._getAjaxContent
[prototype.js:815]      Ajax.Request.prototype.respondToReadyState()
(state="4", a.k.a. "Complete")
[prototype.js:774]      onStateChange
protype.js:68]          Function.prototype.bind()
***prototype.js:736     Ajax.Request.prototype.request("/ajax/xA-feedbackSetup")
prototype.js:706        
Ajax.Request.prototype.initialize("/ajax/xA-feedbackSetup",
prototype.js:20         create (XMLHttpRequest)
window.js:1092          _runAjaxRequest
window.js:966           Dialog.confirm (ajax method to get content, ...)
--- (debugger confusion)---   this method evaluates some javascript
code that is really "Dialog.confirm("/ajax/xA-feedbackSetup")...
krillion.js:53          evalCode(open_feedback) (This is the "onclick"
handler, called from div#siteFeedback)
---------


If you look at Ajax.Request.prototype.request, line 736 and following,
it looks like this:

-----------------
 736:     this.transport.send(this.options.method == 'post' ? body : null);

          /* Force Firefox to handle ready state 4 for synchronous requests */
 740:     if (!this.options.asynchronous && this.transport.overrideMimeType)
          this.onStateChange();
-----------------

What happens is that line 740 is true, and calls onStateChange(),
which you can see from the above call stack, has already happened!  My
suspicion is that line 740 is a hack to fix firefox, but something
about Firebug 1.0 being installed has fixed the problem with firefox,
so now this hack is causing problems.

FYI, Van

_______________________________________________
Javawin mailing list
[email protected]
http://mail.xilinus.com/mailman/listinfo/javawin_xilinus.com

Reply via email to