Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js http://forums.asp.net/t/1252014.aspx/1?Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+js+Thu, 27 Oct 2011 11:46:38 -040012520142316714http://forums.asp.net/p/1252014/2316714.aspx/1?Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+js+Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Safari 3 is detected as Sys.Browser.Safari. There are specific hacks for Safari implemented in MicrosoftAjax.js. These hacks cause problems with Safari 3 as it uses a new javascript rendering engine called WebKit.<br> <br> The hacks can cause dreaded errors like when updating a control's visibility from false to true in an updatepanel during a partial update. When that occurs it needs to download the supporting javascript to run the now visible server control. With the hacks in place it does not properly dynamically load the javascript file and it throws the following error:<br> <br> Sys.ScriptLoadFailedException: The script 'http://localhost:2241/WebResource.axd?d=hvpXhV5kEMwLgAoaIglURevR_XTtDTBoKZ3aZWWaIvEkBXbLudri1AIv5bRs5f6licjCZMs3Z3MioQLqLTXV98582pKDHkD7BucGkKsPLz41&amp;t=633444640020014740' failed to load. Check for:<br> Inaccessible path.<br> Script errors. (IE) Enable 'Display a notification about every script error' under advanced settings.<br> Missing call to Sys.Application.notifyScriptLoaded().<br> &nbsp;<br> Now WebKit runs MicrosoftAjax.js without any problems. So I have modified the following to detect a new browser type called WebKit.<br> </p> <p>In the file called &quot;MicrosoftAjax.debug.en-US.js&quot; (do the same for the other cultures)<br> </p> <p>Change:</p> <p>Sys.Browser = {};<br> Sys.Browser.InternetExplorer = {};<br> Sys.Browser.Firefox = {};<br> Sys.Browser.Safari = {};<br> Sys.Browser.Opera = {};<br> Sys.Browser.agent = null;<br> Sys.Browser.hasDebuggerStatement = false;<br> Sys.Browser.name = navigator.appName;<br> Sys.Browser.version = parseFloat(navigator.appVersion);<br> if (navigator.userAgent.indexOf(' MSIE ') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.InternetExplorer;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d&#43;\.\d&#43;)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.hasDebuggerStatement = true;<br> }<br> else if (navigator.userAgent.indexOf(' Firefox/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Firefox;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d&#43;\.\d&#43;)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.name = 'Firefox';<br> &nbsp;&nbsp;&nbsp; Sys.Browser.hasDebuggerStatement = true;<br> }<br> else if (navigator.userAgent.indexOf(' Safari/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Safari;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.name = 'Safari';<br> }<br> else if (navigator.userAgent.indexOf('Opera/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Opera;<br> }</p> <p>To:&nbsp;</p> <p>Sys.Browser = {};<br> Sys.Browser.InternetExplorer = {};<br> Sys.Browser.Firefox = {};<br> Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit<br> Sys.Browser.Safari = {};<br> Sys.Browser.Opera = {};<br> Sys.Browser.agent = null;<br> Sys.Browser.hasDebuggerStatement = false;<br> Sys.Browser.name = navigator.appName;<br> Sys.Browser.version = parseFloat(navigator.appVersion);<br> if (navigator.userAgent.indexOf(' MSIE ') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.InternetExplorer;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d&#43;\.\d&#43;)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.hasDebuggerStatement = true;<br> }<br> else if (navigator.userAgent.indexOf(' Firefox/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Firefox;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d&#43;\.\d&#43;)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.name = 'Firefox';<br> &nbsp;&nbsp;&nbsp; Sys.Browser.hasDebuggerStatement = true;<br> }<br> else if (navigator.userAgent.indexOf('WebKit/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.WebKit;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.name = 'WebKit';<br> }<br> else if (navigator.userAgent.indexOf(' Safari/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Safari;<br> &nbsp;&nbsp;&nbsp; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp;&nbsp;&nbsp; Sys.Browser.name = 'Safari';<br> }<br> else if (navigator.userAgent.indexOf('Opera/') &gt; -1) {<br> &nbsp;&nbsp;&nbsp; Sys.Browser.agent = Sys.Browser.Opera;<br> }</p> 2008-04-23T16:17:16-04:002391282http://forums.asp.net/p/1252014/2391282.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Thank-you for your post!&nbsp; I was having the exact Safari 3 problem you mentioned, with ScriptLoadFailedException's during partial updates.</p> <p>I used just this snippet in a ScriptReferenced .js, and it fixed the problem for my setup:</p> <p>Sys.Browser.WebKit = {}; <span class="cmt">//Safari 3 is considered WebKit</span><br> <span class="kwd">if</span>( navigator.userAgent.indexOf( <span class="st">'WebKit/'</span> ) &gt; -1 )<br> {<br> &nbsp; Sys.Browser.agent = Sys.Browser.WebKit;<br> &nbsp; Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp; Sys.Browser.name = <span class="st">'WebKit'</span>;<br> }<br> </p> <p>Is there a&nbsp;&quot;more correct&quot; way of removing the Safari hacks, instead of messing with the Sys.Browser object?</p> 2008-05-30T17:15:12-04:002392110http://forums.asp.net/p/1252014/2392110.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>The problem is that if we remove the Safari hacks then Safari 2 will stop working with AJAX. I guess it would be possible to go through all the .js files and find where each hack is and add a version check on top of the browser check. </p> <p>Safari 3 is just a nice gui on top of WebKit. I like adding WebKit as a browser type as there are a number of other browsers that use WebKit at its core. This allows us to make WebKit specific &quot;optimizations&quot; if necessary and results in it being applied to all WebKit browsers.<br> </p> <p>http://trac.webkit.org/wiki/Applications%20using%20WebKit</p> <p>Tali :&gt;<br> </p> 2008-05-31T07:13:35-04:002431554http://forums.asp.net/p/1252014/2431554.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>We are noticing the same problems using the ASP.NET 2.0 version of the Microsoft AJAX Library (&quot;version 1.0&quot; ???).</p> <p>&nbsp;How can we change this in the built DLL (or override it)?&nbsp; All of the source code available for the library only includes the CS and JS files.&nbsp; There are no project files included in the download.</p> <p>&nbsp;<br> Thank you very much in advance.<br> &nbsp;-Arizona</p> <p>&nbsp;</p> 2008-06-18T15:59:32-04:002495652http://forums.asp.net/p/1252014/2495652.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>&nbsp;</p> <p>Hi,</p> <p>I'm using system.web.extension and i can rebuild it (there is no source code). So does any of you&nbsp;can rebuild dll with this fix&nbsp;? Or tell me where can i found source code for this ?</p> <p>&nbsp;Thanks in advance,</p> <p>Rob</p> 2008-07-17T09:33:21-04:002548127http://forums.asp.net/p/1252014/2548127.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js Hi, I've got some issues under Safari 3. I've just modified applied the code you've mentioned to the following file. However, the problem (with Panel Refreshing) is still there. &quot;C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\MicrosoftAjaxLibrary\System.Web.Extensions\1.0.61025.0&quot; How am I supposed to apply this patch? How should I compile the changes into a new .dll???? Thanks. 2008-08-10T12:41:07-04:002549816http://forums.asp.net/p/1252014/2549816.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>How to apply patches to MicrosoftAjax.js<br> <br> There are 2 possible ways of doing this. You can replace each script reference or you can set a path for all scripts. Note that it is important that the folder structure remains that same. It needs the namespace and version to calculate where the files are. Don't forget there are a couple of different versions. There is live and debug as well as culture specific files.<br> <br> The scripts can be found at <a href="http://www.asp.net/ajax/downloads/" title="http://www.asp.net/ajax/downloads/"> http://www.asp.net/ajax/downloads/</a><br> </p> <p>Script Reference Method: <br> </p> <pre class="prettyprint">&lt;asp:ScriptManager ID=&quot;ScriptManager&quot; runat=&quot;server&quot;&gt; &lt;Scripts&gt; &lt;asp:ScriptReference Name=&quot;MicrosoftAjax.js&quot; ScriptMode=&quot;Auto&quot; Path=&quot;/scripts/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js&quot; /&gt; &lt;/Scripts&gt; &lt;/asp:ScriptManager&gt;</pre>&nbsp;&nbsp;</pre><pre class="prettyprint">ScriptPath Method:<br></pre><p>If you use this method you need to get all the scripts in system.web.extensions and copy them<br>to ~/{Where you store you javascript files}.</p><pre class="prettyprint">&lt;<span class="tag">asp:ScriptManager</span><span class="attr"> ID=</span><span class="attrv">"ScriptManager"</span><span class="attr"> runat=</span><span class="attrv">"server"</span><span class="attr"> ScriptPath=</span><span class="attrv">"~/{Where you store you javascript files}"</span>/&gt;</pre>&nbsp;&nbsp;<br> 2008-08-11T12:01:05-04:002602485http://forums.asp.net/p/1252014/2602485.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>&nbsp;This patch will also allow Google Chrome browser to work MS Ajax as it is based on webkit. Google chrome uses webkit and has a compatible user agent, so it is detected as webkit.</p> <p>&nbsp;Regards<br> &nbsp;&nbsp;&nbsp; Taliesin [:D]<br> </p> 2008-09-05T10:27:01-04:002898429http://forums.asp.net/p/1252014/2898429.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>I've experimented with this bug a lot, and the best temporary solution is the one proposed by <strong>kshakir </strong>(second post in this thread). Simply create a single JS file with his code and reference it in your site. To work properly, this script should be loaded before any AJAX control scripts. For my applications, I simply reference it as the first script in the ScriptManager, like so:</p> <font size="2"> <p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">asp</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">:</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ScriptManager</font></font><font size="2"> </font><font color="#ff0000" size="2"><font color="#ff0000" size="2">ID</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=&quot;ScriptManager1&quot;</font></font><font size="2"> </font><font color="#ff0000" size="2"><font color="#ff0000" size="2">runat</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=&quot;server&quot;&gt;<br> </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Scripts</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;<br> </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">asp</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">:</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ScriptReference</font></font><font size="2"> </font><font color="#ff0000" size="2"><font color="#ff0000" size="2">Path</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">=&quot;~/Scripts/Safari3AjaxHack.js&quot;</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">/&gt;<br> </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; &lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">Scripts</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;<br> </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&lt;/</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">asp</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">:</font></font><font color="#a31515" size="2"><font color="#a31515" size="2">ScriptManager</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&gt;</font></font></p> <p><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000">The file can exist in any folder in your site, but as <strong>kshakir </strong>says, it should contain this code:</font></font></font></p> Sys.Browser.WebKit = {}; <span class="cmt">//Safari 3 is considered WebKit</span><br> <span class="kwd">if</span>( navigator.userAgent.indexOf( <span class="st">'WebKit/'</span> ) &gt; -1 )<br> {<br> &nbsp; Sys.Browser.agent = Sys.Browser.WebKit;<br> &nbsp; Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp; Sys.Browser.name = <span class="st">'WebKit'</span>;<br> }<br> <p><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000">Microsoft and the AjaxControlToolkit project managers tell me they want to fix this bug in the toolkit, so eventually this hack will (hopefully) no longer be necessary. But in the meantime, this solution solves the problem with AjaxControlToolkit scripts not being loaded properly during partial updates. </font></p> </font></font> 2009-01-28T15:50:12-05:002984675http://forums.asp.net/p/1252014/2984675.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js Thanks this worked for me :) 2009-03-05T10:55:17-05:003025303http://forums.asp.net/p/1252014/3025303.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js Awesome! This worked for me too. Spent about two days trying to figure this out! 2009-03-20T21:48:51-04:003106902http://forums.asp.net/p/1252014/3106902.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Also got this bug. Guys, thanks for the solution!</p> 2009-04-21T08:19:52-04:003118278http://forums.asp.net/p/1252014/3118278.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>&nbsp;I am facing lot of problems when i am using AutoCompleteExtender while accessing in google chrome and safari i tried your suggested solution but still its not working for me. </p> <p>Please help me its very very urgent to fix this issue as i have a release next week <br> </p> <p>&nbsp;</p> <p>The i have used is as follows :</p> <p>&nbsp;&lt;ajaxToolkit:ToolkitScriptManager runat=&quot;server&quot; ID=&quot;ScriptManager1&quot; ScriptMode=&quot;Release&quot; EnablePageMethods=&quot;True&quot; CombineScripts=&quot;true&quot;&gt;<br> &nbsp;&lt;Scripts&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ScriptReference Path=&quot;~/scripts/webkit.js&quot; /&gt;<br> &nbsp;&nbsp;&nbsp; &lt;/Scripts&gt;<br> &lt;/ajaxToolkit:ToolkitScriptManager&gt; </p> <p>Where ajaxToolkit is the registered prefix for AjaxControlToolkit and the script file webkit.js contains the following code:</p> <p>Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit<br> if( navigator.userAgent.indexOf( 'WebKit/' ) &gt; -1 )<br> {<br> &nbsp; Sys.Browser.agent = Sys.Browser.WebKit;<br> &nbsp; Sys.Browser.agent = Sys.Browser.WebKit;<br> &nbsp; Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d&#43;(\.\d&#43;)?)/)[1]);<br> &nbsp; Sys.Browser.name = 'WebKit';<br> } </p> <p>&nbsp;</p> <p>AutoCompleteExtender code is as follows :</p> <p>&nbsp;</p> <p>&lt;ajaxToolkit:AutoCompleteExtender id=&quot;autoComplete1&quot; runat=&quot;server&quot; CompletionListHighlightedItemCssClass=&quot;autocomplete_highlightedListItem&quot; CompletionListItemCssClass=&quot;autocomplete_listItem&quot; CompletionListCssClass=&quot;autocomplete_completionListElement&quot; UseContextKey=&quot;True&quot; ServiceMethod=&quot;GetCompletionList&quot; MinimumPrefixLength=&quot;1&quot; CompletionSetCount=&quot;30&quot; EnableCaching=&quot;false&quot; CompletionInterval=&quot;500&quot; TargetControlID=&quot;companytxt&quot; BehaviorID=&quot;AutoCompleteEx&quot;&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Animations&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;OnShow&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Sequence&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%-- Make the completion list transparent and then show it --%&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;OpacityAction Opacity=&quot;0&quot; /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HideAction Visible=&quot;true&quot; /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%--Cache the original size of the completion list the first time<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the animation is played and then set it to zero --%&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ScriptAction Script=&quot;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Cache the size and setup the initial size<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var behavior = &#36;find('AutoCompleteEx');<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!behavior._height) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var target = behavior.get_completionList();<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; behavior._height = target.offsetHeight - 2;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.style.height = '0px';<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&quot; /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%-- Expand from 0px to the appropriate size while fading in --%&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Parallel Duration=&quot;.4&quot;&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FadeIn /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Length PropertyKey=&quot;height&quot; StartValue=&quot;0&quot; EndValueScript=&quot;&#36;find('AutoCompleteEx')._height&quot; /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Parallel&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Sequence&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/OnShow&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;OnHide&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%-- Collapse down to 0px and fade out --%&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Parallel Duration=&quot;.4&quot;&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FadeOut /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Length PropertyKey=&quot;height&quot; StartValueScript=&quot;&#36;find('AutoCompleteEx')._height&quot; EndValue=&quot;0&quot; /&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Parallel&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/OnHide&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Animations&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ajaxToolkit:AutoCompleteExtender&gt; <br> </p> 2009-04-25T13:05:43-04:003121849http://forums.asp.net/p/1252014/3121849.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>&nbsp;I've been using this hack since today to solve my problem with AJAX CT in G.Chrome &amp; Safari <img src="http://sc.webmessenger.msn.com/10.1.0323.0/session/images/emoticons/smile_regular.gif" alt=":)" style="vertical-align:bottom"><br> </p> <p>&nbsp;Thanks ! <br> </p> 2009-04-27T12:32:38-04:003123395http://forums.asp.net/p/1252014/3123395.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Hey How come its still not working for me. Which versions of chrome and safari you are using. Please check and tell is there any code errors or anything else i am missing so i can also get it worked out.</p> <p>&nbsp;</p> <p>Thanks&nbsp;</p> <p>&nbsp;</p> 2009-04-28T04:09:01-04:003123855http://forums.asp.net/p/1252014/3123855.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>&nbsp;I'm using :</p> <ul> <li>Chrome 1.0.154.59<br> </li><li>Safari 3.1.2 (525.21)<br> </li></ul> 2009-04-28T07:09:03-04:003124015http://forums.asp.net/p/1252014/3124015.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p></p> <blockquote><span class="icon-blockquote"></span> <h4>csnaveen31</h4> <p>Hey How come its still not working for me. Which versions of chrome and safari you are using. </p> <p></p> </blockquote> <p></p> <p>I have tested it with safari 4 (528.16)</p> <p>Are you sure that you have exactly the same error that described in the first post ? </p> <p>&nbsp;</p> 2009-04-28T08:08:34-04:003124401http://forums.asp.net/p/1252014/3124401.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Have you debugged the client script to make sure the IF block is being entered? A simple alert('hello, world'); statement will tell you if the browser is being detected by the javascript.</p> <p>What is the full UserAgent string being returned by the gchrome and safari versions you're using?</p> <p>Do other AJAX CT controls have problems on the same page? Have you tried removing the animation from the autocomplete? </p> 2009-04-28T10:14:28-04:003133748http://forums.asp.net/p/1252014/3133748.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js If you don't want to replace the MicrosoftAjax file and/or modify it there is a very simple solution. You can just implement taliesins solution after the document has been loaded or simply right after that file has been loaded. So just create a js file that gets loaded after the MicrosoftAjax.js with this in it: function patchMicrosoftAjax() { Sys.Browser = {}; Sys.Browser.InternetExplorer = {}; Sys.Browser.Firefox = {}; Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit Sys.Browser.Safari = {}; Sys.Browser.Opera = {}; Sys.Browser.agent = null; Sys.Browser.hasDebuggerStatement = false; Sys.Browser.name = navigator.appName; Sys.Browser.version = parseFloat(navigator.appVersion); if (navigator.userAgent.indexOf(' MSIE ') &gt; -1) { Sys.Browser.agent = Sys.Browser.InternetExplorer; Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d&#43;\.\d&#43;)/)[1]); Sys.Browser.hasDebuggerStatement = true; } else if (navigator.userAgent.indexOf(' Firefox/') &gt; -1) { Sys.Browser.agent = Sys.Browser.Firefox; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d&#43;\.\d&#43;)/)[1]); Sys.Browser.name = 'Firefox'; Sys.Browser.hasDebuggerStatement = true; } else if (navigator.userAgent.indexOf('WebKit/') &gt; -1) { Sys.Browser.agent = Sys.Browser.WebKit; Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d&#43;(\.\d&#43;)?)/)[1]); Sys.Browser.name = 'WebKit'; } else if (navigator.userAgent.indexOf(' Safari/') &gt; -1) { Sys.Browser.agent = Sys.Browser.Safari; Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d&#43;(\.\d&#43;)?)/)[1]); Sys.Browser.name = 'Safari'; } else if (navigator.userAgent.indexOf('Opera/') &gt; -1) { Sys.Browser.agent = Sys.Browser.Opera; } } // Run this if you can ensure this file is placed after MicrosoftAjax.js patchMicrosoftAjax(); // Run this if you cannot ensure this file is placed after MicrosoftAjax.js and if you are using jQuery &#36;(patchMicrosoftAjax); // or jQuery(patchMicrosoftAjax); // or &#36;.&#36;(document).ready(function() { patchMicrosoftAjax(); }); 2009-05-01T19:25:11-04:003334944http://forums.asp.net/p/1252014/3334944.aspx/1?Re+Compatibility+patch+for+WebKit+Safari+3+3+5+21022+8+MicrosoftAjax+debug+en+US+jsRe: Compatibility patch for WebKit (Safari 3) 3.5.21022.8 MicrosoftAjax.debug.en-US.js <p>Worked for me and easily saved me a few days of stress.</p> <p>Thanks so much for the help.<br> </p> 2009-08-07T08:01:48-04:00