:: Forum >>

Popup issue for Combo Box in IE6

We have been experiencing a problem lately when clicking combo boxes. On some machines (all the machines are clones with the same versions of IE) the popup from the combo box does not show up, and in its place is a white frame the width of the screen and the length of the popup. Has anyone ever experienced this?
Justin
Tuesday, June 26, 2007
I have a screenshot here. Sorry that it is heavily edited...it is all that I could get approved.

http://paintedover.com/uploads/show.php?loc=0716&f=dropdown_error.jpg

Note the big white box below the combo box in row 2. That is the error in action.

Justin
Tuesday, June 26, 2007
Sorry, that link appears to be broken.

http://img122.imageshack.us/my.php?image=dropdownerrortu6.jpg
Justin
Tuesday, June 26, 2007
Justin,

most likely this is a timing issue (AW bug), related to how many stylesheets you have on this page and whether the caching is enabled in the browser and/or server configuration. If you are using AW 2.0.1 then first try 2.0.2, it should work better. If you have this issue with 2.0.2 then you have to increase the size calculation delay (line 75 in /source/lib/templates/popup.js).
Alex (ActiveWidgets)
Tuesday, June 26, 2007
Thanks! We shall try this and report back with our findings.

Justin
Tuesday, June 26, 2007
It seems to significantly decrease the frequency of this error. As we increase the calc delay, we certainly notice an improvement. When we do experience the issue, it is when a user clicks the text of the combo box, and then on the arrow.

Any further help would be appreciated, but this fix will do for now.

Thanks!
Justin
Tuesday, June 26, 2007
Ahh the error has resurfaced using the new version and a timeout time of 1500. Any thoughts on what to do next, Alex?

Again it only happens on some machines (all of the machines are clones though), but on those machines, it happens consistantly.
Justin
Monday, July 2, 2007
Unfortunately I was never able to reproduce this error reliably. Could you check if those machine have caching disabled in IE (Tools->Options->Browsing History->Temporary Internet Files->Check for newer versions of the stored pages->Every time I visit webpage, instead of Automatically). Or maybe there is any other difference in the IE configuration?

Do you see the same error if you open any standard AW example, like /examples/themes/controls-xp-quirks.htm?

Which DOCTYPE are you using?

Do you have many external stylesheets and/or scripts on this page? Does it still happen if you remove them?
Alex (ActiveWidgets)
Monday, July 2, 2007
We have come up with a fix for this:
obj.showPopup = function(){

        var popup = window.createPopup();
        this.$popup = popup;
        AW.$popup = this;

        var doc = popup.document;
        doc.open();

        if (AW.strict){
            doc.write("<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\" \"http:\/\/www.w3.org/TR/html4/strict.dtd\">");
        }

        doc.write("<html class=\"aw-popup-window aw-system-control " + AW._htmlClasses + "\"><head>");

        AW.register(doc.parentWindow);

        for (var i=0; i<document.styleSheets.length; i++){
            doc.write(document.styleSheets[i].owningElement.outerHTML);
        }

        doc.write("</head><body onselectstart=\"return false\" oncontextmenu=\"return false\">");
        doc.write(this.getPopupTemplate().toString());
        doc.write("</body></html>");
        doc.close();

        var ref = this.element();

        var left = 0;
        var top = ref.offsetHeight;
        var width = ref.offsetWidth;
        var height = 1;

        popup.show(left, top, width, height, ref);

        //width = Math.max(doc.body.scrollWidth, width);
        //height = Math.max(doc.body.scrollHeight+1, 20);
        //popup.show(left, top, width, height, ref);

        this.setTimeout(function(){
            try {
                width = Math.max(doc.body.scrollWidth, width);
                height = Math.max(doc.body.scrollHeight+1, 20);
                if (popup.isOpen){
                    popup.show(left, top, width, height, ref);
                }
                popup = null;
                ref = null;
            }
            catch(err){
            }
        }, 250); // timeout for resizing popup
    };
Justin
Tuesday, July 3, 2007
By commenting out those lines and dropping the timeout to 250, we were able to get this issue to dissappear! Our rationale was that the error was occurring at the same time no matter how large the timeout was. Sure enough, the screen was getting painted before the timeout as well.
Justin
Tuesday, July 3, 2007

This topic is archived.


Back to support forum

Forum search