ANS-1872 · DéVELOPPEMENT SUITESCRIPT
Comment insérer du CSS personnalisé dans l’en-tête d’un formulaire d’enregistrement NetSuite
Utilisez un script d'événement utilisateur et un champ HTML intégré pour ajouter de manière dynamique une feuille de style personnalisée aux formulaires d'enregistrement NetSuite.
Solution courte
Pour ajouter un fichier CSS personnalisé à l’en-tête d’un formulaire d’enregistrement NetSuite, hébergez ce fichier CSS dans le « File Cabinet » en veillant à ce qu’il soit accessible au public. Créez ensuite un script d’événement utilisateur avec une fonction `beforeLoad` qui ajoute un champ HTML en ligne. La valeur par défaut de ce champ contiendra du code JavaScript qui crée et insère un élément de lien vers une feuille de style dans l’en-tête du formulaire.
Scénario
Les utilisateurs de NetSuite ont souvent besoin de personnaliser la mise en page des formulaires d’enregistrement afin d’améliorer l’expérience utilisateur ou de respecter des directives de marque spécifiques. L’interface standard de NetSuite ne propose pas de méthode directe pour ajouter des fichiers CSS personnalisés à l’en-tête des formulaires d’enregistrement individuels. Ce scénario répond au besoin de charger dynamiquement une feuille de style personnalisée lors de l’accès à un formulaire d’enregistrement.
Solution
Hébergez le fichier CSS personnalisé : téléchargez votre fichier CSS personnalisé ainsi que toutes les images associées dans le dossier de fichiers NetSuite. Assurez-vous que la disponibilité du fichier est définie sur « Disponible sans connexion » afin de permettre l’accès public.
Créez un script d’événement utilisateur : développez un nouveau script d’événement utilisateur dans SuiteScript 2.x. Ce script s’exécutera lors de l’événement
beforeLoaddu formulaire d’enregistrement cible.
javascript
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
*/
define([], function() {
function beforeLoadTestInject(context) {
var form = context.form;
var cssScriptField = form.addField({
id: 'custpage_cssfield',
type: 'inlinehtml',
label: 'Custom CSS Injector'
});
cssScriptField.defaultValue = "<script type="text/javascript">var linkElement = document.createElement('link');linkElement.rel = 'stylesheet';linkElement.href = 'https://system.sandbox.netsuite.com/core/media/media.nl?id=577&c=05801&h=F4390276d84372784aa&_xt.css';document.getElementsByTagName('head')[0].insertBefore(linkElement,document.getElementsByTagName('head')[0].firstChild);</script>";
}
return {
beforeLoad: beforeLoadTestInject
};
});Le script ci-dessus crée un champ HTML en ligne (custpage_cssfield
) sur le formulaire d’enregistrement. Le defaultValue
de ce champ contient un extrait de code JavaScript. Ce code JavaScript crée dynamiquement un élément ``
destiné à une feuille de style et l’insère en tant que premier élément enfant au sein de la section ``
du document HTML. Cela garantit que le CSS personnalisé se charge dès le début du processus de rendu de la page. Il est important de noter que cette méthode implique une manipulation directe du Modèle d’objet de document (DOM), ce que la documentation NetSuite déconseille formellement, en recommandant l’utilisation des API SuiteScript pour les interactions avec l’interface utilisateur. De plus, NetSuite a indiqué que les champs HTML intégrés dans les formulaires d’enregistrement standard, en dehors des Suitelets, sont susceptibles d’être dépréciés dans une prochaine version. Par conséquent, cette approche doit être considérée comme une solution à court terme et utilisée avec prudence, car elle peut entraîner un comportement inattendu ou nécessiter des ajustements dans les futures versions de NetSuite.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
