Sur mon site SharePoint, j’ai des ApplicationPage ou des webparts contenant de l’Ajax de MS.
Parfois, sur certains appels, les navigateurs sous webkit (Safari, Chrome) me renvoient l’erreur suivante :
Uncaught Sys.ScriptLoadFailedException: Sys.ScriptLoadFailedException: Échec du chargement du script 'http://dev2008/ScriptResource.axd?d=UWfXBVZmHMLaD9yazDm3XCZ1zh7gE0VbTVJs-BJ2wUiVXFWLG3ZiCsDINgJQjFMAPY0wxaBY-pp9eZhQNhP0y-I86N1uMrSe_7z7leFAxDedMNEoRb2dmo3NoyO7pbno5N3XRdEOvlAKSmJYeyoOmKNssMKeamFzDiHavM1oTZMoZZCts9toMuUQPcYX99NBuI94Mg2&t=ffffffffdf363b93'. Vérifiez les éléments suivants :
Chemin d'accès inaccessible.
Erreurs de script. (Internet Explorer) Activez 'Afficher une notification de chaque erreur de script' dans les paramètres avancés.
Appel manquant à Sys.Application.notifyScriptLoaded().
Sys$WebForms$PageRequestManager$_scriptIncludesLoadCompleteScriptResource.axd:1266
Sys$WebForms$PageRequestManager$_scriptIncludesLoadFailedScriptResource.axd:1304
(anonymous function)ScriptResource.axd:31
(anonymous function)ScriptResource.axd:47
Sys$_ScriptLoader$_raiseErrorScriptResource.axd:3656
Sys$_ScriptLoader$_scriptLoadedHandlerScriptResource.axd:3677
(anonymous function)ScriptResource.axd:47
(anonymous function)
Après de longues recherches, j’ai trouvé ce post très intéressant qui corrige le problème :
http://forums.asp.net/p/1252014/2392110.aspx
Donc voici rapidement la solution que j’ai mis en place sur mon site SharePoint :
Dans ma masterpage, j’ai ajouté un lien vers un fichier de hack dans le scriptmanager :
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePartialRendering="true"
EnableScriptLocalization="true" EnableScriptGlobalization="true">
<Scripts>
<asp:ScriptReference Path="/_layouts/Extranet/js/WebKitAjaxHack.js" />
</Scripts>
</asp:ScriptManager>
Et voici le contenu de ce fichier WebKitAjaxHack.js :
Sys.Browser.WebKit = {}; //Safari + chrome
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';
}
Une fois la masterpage publier ainsi que le fichier js, tous mes appels fonctionnent sans erreur.