ANS-0134 · RECHERCHES ENREGISTRéES ET FORMULES

Comment afficher du contenu HTML dans les recherches enregistrées de NetSuite pour les boutiques en ligne

Affichez correctement le code HTML dynamique dans les résultats des recherches enregistrées de NetSuite, en résolvant les problèmes liés aux caractères échappés et au rendu côté client.

Solution courte

Pour générer du code HTML dans les recherches enregistrées de NetSuite, utilisez le type de champ « Formule (HTML) » pour un rendu direct. En cas de logique complexe ou de manipulation côté client, stockez le code HTML dans un champ de texte libre et utilisez JavaScript avec une méthode de déséchappement sécurisée telle que DOMParser afin d’afficher correctement le contenu.

Scénario

Lors de l’affichage de contenu HTML généré dans le cadre des recherches enregistrées de NetSuite, notamment pour une utilisation dans des boutiques en ligne, les utilisateurs rencontrent souvent des problèmes liés à un rendu incorrect du code HTML. Le comportement par défaut de NetSuite, qui consiste à échapper les caractères HTML, peut entraîner l’affichage des balises HTML brutes sous forme de texte brut plutôt que de contenu formaté, ce qui nécessite des solutions spécifiques pour garantir un rendu correct.

Solution

La méthode la plus simple pour afficher du code HTML directement dans les recherches enregistrées de NetSuite consiste à utiliser le type de champ « Formule (HTML) ». Ce type de champ dédié est conçu pour interpréter et afficher du contenu HTML sans nécessiter de déséchappement côté client, ce qui en fait l’approche recommandée pour l’affichage direct de code HTML. Si la logique de génération du code HTML est suffisamment concise pour tenir dans une formule de recherche enregistrée, il s’agit de la solution la plus simple. Dans les cas où la logique de génération du code HTML est trop complexe pour une formule de recherche enregistrée, ou lorsqu’une manipulation dynamique côté client est nécessaire, une approche par script peut être utilisée. Cela implique de stocker le code HTML généré dans un champ de texte libre standard de NetSuite. Par la suite, du code JavaScript côté client, utilisant souvent des bibliothèques telles que jQuery, peut récupérer ce code HTML non affiché et le traiter pour un affichage correct. L’un des défis courants liés à cette méthode de script réside dans le fait que NetSuite génère du code HTML avec des caractères échappés (par exemple, < pour <). Les scripts côté client doivent déséchapper ces chaînes avant l’affichage. Bien que la méthode unescape() en JavaScript soit obsolète et ne gère pas correctement les entités HTML, une fonction personnalisée peut être utilisée. La fonction htmlDecode suivante permet de supprimer l’échappement des entités HTML ; toutefois, pour une sécurité renforcée contre les vulnérabilités de type Cross-Site Scripting (XSS), le JavaScript moderne propose des approches plus robustes, telles que l’utilisation de DOMParser.

javascriptfunction htmlDecode(input){  var e = document.createElement('div');  e.innerHTML = input;  return e.childNodes.length == 0 ? "" : e.childNodes[0].nodeValue;}

Vous trouverez ci-dessous un exemple de code jQuery permettant de localiser et de traiter ces liens dans le résultat d’une recherche enregistrée :

javascript//replace link string in saved search by actual link$j('td.listtexthl:contains("<a href")').each(function(index,element){     var linkObject = $j(this).html().replace(/</gi,"<").replace(/>/gi,">");     $j(this).html(htmlDecode(linkObject));});

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Recherches enregistrées et formules

Parler à un consultant