[ 
https://issues.apache.org/jira/browse/WICKET-2253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Igor Vaynberg updated WICKET-2253:
----------------------------------

    Fix Version/s:     (was: 1.4-RC2)
                       (was: 1.3.6)

> JavaScript null reference in IE7 for autocomplete text fields added by AJAX
> ---------------------------------------------------------------------------
>
>                 Key: WICKET-2253
>                 URL: https://issues.apache.org/jira/browse/WICKET-2253
>             Project: Wicket
>          Issue Type: Bug
>            Reporter: Per Cederberg
>
> IE7 displays an null reference error when adding a Wicket 
> AutoCompleteTextField to a form as part of an AJAX response. This is caused 
> by the INPUT DOM element not being immediately accessible, since it is added 
> as HTML text (via innerHTML) instead of via the normal DOM API:s. So, the 
> JavaScript autocomplete initialization code must be delayed until the HTML 
> code has been parsed and  properly inserted into the DOM tree.
> We've solved this by patching our local copy of Wicket 1.3.x in the 
> wicket-autocomplete.js file:
> @@ -39,6 +37,7 @@
>      var KEY_CTRL=17;
>      var KEY_ALT=18;
>  
> +    var initCounter=10;       // counter to avoid eternal init calls
>      var selected=-1;   // index of the currently selected item
>      var elementCount=0; // number of items on the auto complete list
>      var visible=0;             // is the list visible
> @@ -63,6 +62,24 @@
>         var throttleDelay = 300;
>  
>      function initialize(){
> +        // Ugly hack to avoid null reference in IE7...
> +        if (initCounter <= 0) {
> +            return;
> +        }
> +        initCounter--;
> +        var obj=wicketGet(elementId);
> +        if (obj == null) {
> +            setTimeout(initialize, 100);
> +            return;
> +        }
> +        initCounter=0;
> +
> +        // Avoid initializing same element twice
> +        if (obj.wicketInit) {
> +            return;
> +        }
> +        obj.wicketInit=true;
> This is not an optimal solution, but with the current Wicket solution of 
> injecting HTML code as text into the DOM tree one is forced to poll for the 
> inserted DOM node...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to