The callee (server [not server application]) is not available and disappeared

2,116 views
Skip to first unread message

EdGioja

unread,
Apr 9, 2012, 5:04:49 PM4/9/12
to prototype-s...@googlegroups.com
I am trying to update the opener page.  This works in all browsers but IE.  IE refuses to update and gives me the error:

The callee (server [not server application]) is not available and disappeared; all connections are invalid

The error occurs on the getinputs line.


Please forgive the random numbers.  In my search for an answer, it was suggested that the variable names weren't unique...so I made them unique.  Removing them doesn't help.
I've seen a number of discussions about .net, but this isn't utilizing any of that.  It is simple code in a ColdFusion environment. 
The activatefield and deactivatefield functions have been in use for a long time and, like I said, it all works in Firefox and Safari.

I would appreciate any help.  Here is my code.

       <script language="javascript">

        // Display/Edit Button
   
        <cfoutput>
   
        // Search for buttons on form and update colors
        r = Math.floor((Math.random()*100)+1).toString();
        this['form' + r ]  = window.opener.document.getElementById("form#form.judgeviewitem#");
        this['arr' + r]= $(this['form' + r ]).getInputs('button');
        var x = 0;
        this['arr' + r].each(function(item) {
            name = item.inspect();
            // Display/Edit button
            if(name.indexOf("DisplayEditOrder") > -1) {
                var newattribute = "background-color:#bgcolor#;";
                $(this['arr' + r][x]).writeAttribute("style", newattribute);
                var newattribute = "deactivatefield(this, \'#bgcolor#\');";
                $(this['arr' + r][x]).writeAttribute("onmouseout", newattribute);
                $(this['arr' + r][x]).writeAttribute("onblur", newattribute);
                var newattribute = "activatefield(this);";
                $(this['arr' + r][x]).writeAttribute("onmouseover", newattribute);
                $(this['arr' + r][x]).writeAttribute("onfocus", newattribute);
                var newattribute = "#buttoncaption#";
                $(this['arr' + r][x]).writeAttribute("value", newattribute);
            }
            x++;
        });

        </cfoutput>

        // force refresh of DOM activitty
        var msie = "Microsoft Internet Explorer";
        var elementonshow = window.opener.document.getElementById('DisplayEditOrder<cfoutput>#form.judgeviewitem#</cfoutput>');
        var tmp = 0;

        if (navigator.appName == msie) {
            tmp = elementonshow.parentNode.offsetTop + 'px';
        } else {
            tmp = elementonshow.offsetTop;
        }
    </script>


Walter Lee Davis

unread,
Apr 14, 2012, 11:43:14 AM4/14/12
to prototype-s...@googlegroups.com
Can you cut this down to a static HTML example, preferably on jsfiddle or another service where you can host and edit JavaScript? I have done these sorts of things before (controlling one window from another) and it's not impossible. But the sea of random numbers here is making my eyes itch. I also suspect that in the process of making a two-file static example, you may find the logical or typo error that is really at fault here.

Walter

> --
> You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/prototype-scriptaculous/-/OdLSFo9KOOkJ.
> To post to this group, send email to prototype-s...@googlegroups.com.
> To unsubscribe from this group, send email to prototype-scripta...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.

Victor

unread,
Apr 16, 2012, 4:33:37 AM4/16/12
to prototype-s...@googlegroups.com
IMHO this happens because you make connections between objects of different windows (opener and popup): arrXXX in popup window points to objects from opener, opener element attributes point to strings/functions belonging to particular popup window (which is really closed). Array in opener window != Array in each popup window, and object references between different windows are OK only while both windows exist.

Try to return single result from popup and make everything in code of opener window.

Alan Smith

unread,
May 9, 2012, 6:48:47 PM5/9/12
to prototype-s...@googlegroups.com
I've been working on this for a year or so now. Seems it's a quirk of IE.
My objective is similar to EdGoiga's, passing a variable back to the calling script using opener.variableName. In my case, the variable is a pretty big object containing an array of objects - data points x, y, z and time.
In Chrome, FireFfox and Safari this works as per the book. After the child window closes, the variable and its value persist in the opener window's script.
In IE - including the current ver 9, as soon as the child window closes, the variable in the opener window disappears.
Various posts around the forums suggest that passing a simple variable works, but it doesn't.
I have got it working, but I don't really understand how, but it's mind-bogglingly slow.
In my solution, the child script populates the the opener's object. Then the child script calls a function in the opener which populates another object defined in the opener from data in the child object using looping and explicit assignment. 
The child window stays open until the function completes (even if I put the window.close before the call to the parent function which I find odd)
My problem now is that this parent function runs really slowly - 30 seconds to process 3,000 data points on IE with the CPU at 100%: Chrome et al get through it in under 1 second. So it would appear that IE is struggling, perhaps with context switching, and not "really" setting up the openervariable in the same context as the opener code. Who knows??
So, I've spent the last couple of days attempting to improve the performance but to no avail.
Most attempts fail with the error message  that is the subject of this thread!
So, anyone with some creative thoughts would be welcome here.

> To post to this group, send email to prototype-scriptaculous@googlegroups.com.
> To unsubscribe from this group, send email to prototype-scriptaculous+unsub...@googlegroups.com.

Victor

unread,
Jun 25, 2012, 1:12:27 PM6/25/12
to prototype-s...@googlegroups.com
Maybe try Object.toJSON() and then String#evalJSON()? You'll be transferring to main context single string.

Reply all
Reply to author
Forward
0 new messages