Quantcast
Channel: AjaxControlToolkit Work Item Rss Feed
Viewing all articles
Browse latest Browse all 4356

Closed Issue: Validators that are included as part of an async postback do not initialize in Safari due to an ASP.NET AJAX 1.0 issue [10784]

$
0
0
[56907,57595]
The relevant part of the data that comes back from the async postback looks like this:
|ScriptContentWithTags|{"text":"\r\n\u003c!--\r\nvar Page_ValidationActive
 = false;\r\nif (typeof(ValidatorOnLoad) == \"function\") {\r\n    ValidatorOnLoad();\r\n}\r\n\r\nfunction
 ValidatorOnSubmit() {\r\n    if (Page_ValidationActive) {\r\n        return ValidatorCommonOnSubmit
();\r\n    }\r\n    else {\r\n        return true;\r\n    }\r\n}\r\n// --\u003e\r\n","type":"text/javascript"
}|
ValidatorOnLoad is used to change the string function name stored in validator.evaluationfunction into a function object. On Safari, the code above is never run, so (for example) ValidatorCallout's attempts to wrap that in a delegate for this._originalValidationMethod fail.
Because this is an ASP.NET AJAX issue, the best we could do would be to detect the string-ness of .evaluationfunction and fix it up ourselves like ValidatorOnLoad does.
A side effect of this is that ValidatorCallout's .dispose null-derefs because of the inconsistent state. I found that the following code seems to take care of that:
<        $removeHandler(this._closeImage, "click", this._closeClickHandler);
---
>        this._focusHandler = null;
>        if (this._closeClickHandler) {
>            if (this._closeImage) {
>                $removeHandler(this._closeImage, "click", this._closeClickHandler);
>            }
>            this._closeClickHandler = null;
>        }
Comments: This ticket was filed for a pre-15.1 version of AJAX Control Toolkit. If this is still an issue in v15.1 or later, please create a new inquiry.

Viewing all articles
Browse latest Browse all 4356

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>