Génération d'une mappe d'URL entre des chemins d'application locaux et des URL Web Content Manager d'exécution
Vous pouvez générer une mappe d'URL JavaScript entre des chemins de système de fichiers d'application locaux et des chemins d'URL de bibliothèque Web Content Manager d'exécution vers des artefacts d'application, le cas échéant. Il s'agit d'une fonction avancée qui est désactivée par défaut.
Pourquoi et quand exécuter cette tâche
Lorsque vous insérez ou importez une application JavaScript, HTML et CSS à utiliser en tant que Script Application, la fonction d'importation et d'insertion localise chaque URL, par exemple, js/app.js ou images/background.png, et la remplace dans le contenu importé. L'URL est remplacée par le marquage de plug-in d'URL Web Content Manager qui génère l'URL Web Content Manager correspondante lors du rendu. Simplifiez au maximum les URL d'application et placez-les entre guillemets afin de permettre aux fonctions d'importation et d'insertion d'effectuer des réparations d'URL lorsque l'application est stockée dans Web Content Manager.
Certaines utilisations de structures JavaScript ou d'applications JavaScript existantes peuvent créer des URL relatives lors de la phase d'exécution dans le navigateur, par exemple, partials/viewDetails.html. Elles tentent ensuite d'effectuer une demande Ajax afin de charger cet artefact directement à partir de ce chemin. Cette situation se produit lorsqu'une structure JavaScript ne génère pas d'URL relatives avant la phase d'exécution. Lorsque les artefacts d'application sont stockés dans les éléments d'objet de contenu Web Content Manager, ils ne possèdent plus de chemins relatifs simples et les recherches échouent. Pour permettre l'utilisation de ces structures et d'applications JavaScript existantes avec Script Application, indiquez aux mécanismes d'importation et d'insertion qu'ils doivent générer une mappe d'URL JavaScript dans la page de l'application. Vous pouvez ensuite utiliser une méthode d'auxiliaire supplémentaire pour extraire l'URL Web Content Manager correspondante qui utilise une URL de chemin d'application locale générée par la structure JavaScript lors de la phase d'exécution. Pour plus de détails, voir API JavaScript pour spHelper.
Procédure
- Ajoutez l'attribut
data-scriptportlet-generate-url-map="true"à l'élément<html>dans votre fichier HTML principal d'applications, comme index.html. - Si JavaScript doit charger un chemin créé de manière dynamique lors de la phase d'exécution, indiquez le chemin local à
__SPNS_spHelper.getElementURLen spécifiant le chemin local comme préfixe. Utilisez les résultats de cette fonction pour déterminer le chemin d'exécution.Par exemple, à la place de ce code :$.get(localpathURL);utilisez le code suivant :
var runtimeURL = __SPNS__spHelper.getElementURL( localPathURL ) ; $.get( runtimeURL ); - Pour tester votre application en dehors du portail et de l'instance Script Application sur laquelle
spHelpern'existe pas, vous devez ajouter du code supplémentaire. Encapsulez l'exemple de code décrit à l'étape précédente avec des instructions de protection supplémentaires.Par exemple, dans le code suivant, vous pouvez ajouter une instruction if et un bloc
try-and-catch. Ce code remplace l'URL locale si l'élémentspHelperavec un espace de nom existe et dispose de la méthodegetElementURL. Cette méthode renvoie une URL d'exécution pour l'URL locale spécifiée. Avec ces instructions supplémentaires qui encapsulent la recherche, lors d'une exécution locale, l'URL basée sur le chemin local d'origine est utilisée à des fins de test, carspHelpern'existe pas.// Start with the local URL (eg, htmlFragments/viewDetails.html ) var runtimeURL = localpathURL; try { if ((__SPNS__spHelper) && (__SPNS__spHelper.getElementURL) ) { // if running as script application, find the WCM URL equivalent var tmpURL = __SPNS__spHelper.getElementURL(localpathURL); // only replace the original URL if there is // an equivalent WCM URL in the map matching it. if (tmpURL) runtimeURL = tmpURL; } // ignore error if generated by browser when looking // for spHelper running locally, outside of portal } catch(error) { } $.get(runtimeURL);
Que faire ensuite
Si les résultats ne sont pas conformes à vos attentes, vérifiez les points suivants :
La mappe doit être initialisée avant que la recherche à partir de la mappe ne soit effectuée. Par conséquent, assurez-vous que ce code JavaScript s'exécute sur un gestionnaire lors du chargement de page ou ultérieurement dans le code JavaScript qui est utilisé dans la page. Vous ne devez pas exécuter le code JavaScript en ligne sur la page tant que le chargement de celle-ci n'est pas terminé.
Si l'exécution qui équivaut à __SPNS__spHelper.getElementURL est introuvable, vérifiez que vous avez envoyé par commande push ou importé l'application avec l'attribut data-scriptportlet-generate-url-map="true" correctement défini dans l'élément <html> sur la page d'application principale.