Ajax-Toolkit und die Webkit Browser

Zugriffe: 3535 starstarstarstarstarstarstarstarstarstar Bewertung:2,5 (2 Bewertungen) 25.06.2009

Heute habe ich nicht schlecht gestaunt, als ich mich wieder einmal intensiver als üblich mit dem Ajax-Toolkit auseinander gesetzt habe.
Ob man will oder nicht, hin und wieder ist man gezwungen gehalten Controls aus dem Ajax-Toolkit einzusetzen. Was man gerne dabei vergisst, ist die Tatsache,
dass das Toolkit weiterentwickelt wird.

Und so habe ich heute aus gegebenen Anlass die Assembly einmal aktualisiert - warum eigentlich nur??

Hintergrund des ganzen war ein Problem, welches ich hatte mit den Webkit-Browsern Safari und Chrome. Beide Browser hatten ein Problem damit, wenn man
Controls aus dem Ajax-Toolkit innerhalb eines Updatepanels lädt. Sicher wird der eine oder andere sagen: dann löse es anders, verzichte auf Updatepanel und Ajax-Toolkit. Ja, stimme ich voll zu, doch gelegentlich werden politische Entscheidungen getroffen, an denen dann nur schwer ein Weg vorbei führt - doch lassen wir dieses Thema. Es ist wie es ist und eine Lösung musste her.

Wie gesagt, die o.g. Webbrowser hatten gelegentlich ein Problem mit dieser Konstellation. Es schien, als würde der Webrequest nicht vollständig verarbeitet werden. Beim Debuggen und der ersten Fehleranalyse vor gut einem Jahr  kam ich darauf, dass das Problem wohl in einem Scriptfehler irgendwo in den Scripten des Ajax-Toolkit liegt. Ich hatten nicht wirklich Lust, das weiter zu verfolgen - bis heute. Heute hat mich dann die ganze Angelegenheit wieder eingeholt - und ich muss sagen, am Ende waren es gerade mal knapp 2 Stunden Zeit, die ich investieren musste, um zu einer Lösung zu gelangen.

Was mich an der ganzen Geschichte am meisten aber ärgert ist, dass es denn keiner bislang geschafft hat, das Ajax-Toolkit in dieser Hinsicht gescheit zu aktualisieren.

Die Lösung fand ich letztlich im ASP.NET-Forum hier.
Eine kleine Scriptdatei mit folgendem Inhalt sollte man sich erstellen:

Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit
if( navigator.userAgent.indexOf( 'WebKit/' ) > -1 ) {
    Sys.Browser.agent = Sys.Browser.WebKit;
    Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = 'WebKit';
}

Das Ganze dann im Scriptmanager wie folgt einbinden:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Scripts/Safari3AjaxHack.js" />
    </Scripts>
</asp:ScriptManager>

Fertig. Super!

Auf dem Weg zu dieser Lösung war ich auch schon dabei - wie oben erwähnt - das Ajax-Toolkit zu aktualisieren. Also aktuelle Version herunter geladen und eingebunden. Auch mal die Scripte geholt und über den Scriptmanager vom ScriptPath geladen. Hier kam dann die nächste Überraschung. Die Scripte passten in der Versionsnummer nicht zu der im Downloadbereich  angebotenen Assembly. So kann das nicht funktionieren. Vielleicht bemerkt es ja mal jemand...

Am Ende dachte ich so: wie schön könnte AJAX sein, wenn man das alles nicht bräuchte...


1 Kommentar
Chris Cluss Chris Cluss Freitag, 26. Juni 2009

Das Problem kannst Du beheben, wenn Du in die Webeigenschaften im VSTudio oder Webdeveloper gehst und einemal zwischen .NET 2.0 und .NET 3.5 hin und her wechselst.


Neuen Kommentar verfassen

Bestätigungscode