Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 11/02/2014 13:07:38

webupsud
Guest
Registered: 21/01/2014
Posts: 77

script non interpreté

J'ai un souci avec Ametys qui ne parvient pas à interpréter ce script :

<script>
<![CDATA[
window.jQuery || document.write('<script src="../resources/components/jquery/jquery.min.js"><\/script>');
var require = requirejs_config = {baseUrl: '../resources'};
]]>
</script>

et qui le passe en commentaire. Sans la balise CDATA, j'obtiens le message d'erreur suivant :

org.xml.sax.SAXParseException : The content of elements must consist of well-formed character data or markup.
context:/file:/D:/Ametys/webapp/cms/skins/demo/stylesheets/commun.xsl - 648 : 86

Je ne comprends pas d'où cela vient, car sur une page HTML classique, le script s'exécute bien si je ne passe pas par Ametys donc.

Offline

#2 11/02/2014 14:24:50

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: script non interpreté

Je m'apercois qu'Ametys charge par défaut sur toutes mes pages un certain nombre de paramètres dans le header dont la librairie javascript jquery. Je me demande si cela ne crée pas un conflit avec la suite de mon code. Est-ce possible de supprimer ces appels par défaut ? (je ne les vois pas dans mon XSL d'entrée)

<meta name="generator" content="Ametys v3 () - The Smart Web CMS">
<link rel="icon" type="image/gif" href="/cms/live/kernel/resources/img/runtime_favico.gif">
<link rel="shortcut icon" type="image/x-icon" href="/cms/live/kernel/resources/img/runtime_favico.ico">
<script src="//use.typekit.net/kax0prf.js" type="text/javascript" async="">
<script type="text/javascript" src="/cms/live/plugins/jquery/resources/js/jquery.min.js">
<script type="text/javascript" src="/cms/live/plugins/jquery-ui/resources/js/jquery-ui.min.js">
<script type="text/javascript" src="/cms/live/plugins/jquery-ui/resources/js/i18n/jquery.ui.datepicker-fr.js">
<script type="text/javascript">
<script type="text/javascript" src="/cms/live/plugins/pirobox_ext/resources/pirobox_extended_min.js">
<script type="text/javascript">
<link type="text/css" href="/cms/live/plugins/jquery-ui/resources/css/ui-lightness/jquery-ui.css" rel="stylesheet" media="screen, print">

Offline

#3 11/02/2014 15:18:29

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: script non interpreté

Bonjour, il y a un template à surcharger pour modifier ces appels. C'est expliqué ici :

Par contre, attention, toutes les vues par défaut des contenus, des services, des plugins utilisent jquery. Donc sauf si vous comptez tout surcharger, je vous déconseille vivement de désactiver ce template.


Concernant le problème que vous évoquez, Ametys ajoute systématiquement des commentaires à l'intérieur des balises scripts par ce que c'est une des bonnes façon d'écrire une balise script.
Celle que vous utilisé en est une autre.

Donc, enlevez le CDATA et remplacez les caractères < par &lt; et cela devrait fonctionner.


Raphael Franchet
Expert Ametys

Offline

#4 11/02/2014 15:37:58

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: script non interpreté

En enlevant le CDATA et en remplacant les balises < et > par &lt; et &gt; je n'ai plus d'erreur mais le javascript n'est toujours pas reconnu, le HTML généré montre qu'il traite tout le script comme un commentaire :

<script>
<!--
window.jQuery || document.write('<script src="../resources/components/jquery/jquery.min.js"><\/script>');
-->
</script>
<script>
<!--
var require = requirejs_config = {baseUrl: '../resources'};
-->
</script>

Offline

#5 11/02/2014 16:28:11

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: script non interpreté

Le code me parait bien. A part peut-être qu'il manque type="text/javascript" sur vos balises <script>

En l'occurence, la premiere ligne est inutile car vous savez que jquery est déjà chargé.

Comment savez-vous que le JS n'est pas reconnu ? le code que vous présentez ne fait pas grand chose : il charge jquery s'il n'existe pas et créer 2 variables js.


Raphael Franchet
Expert Ametys

Offline

#6 11/02/2014 16:49:28

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: script non interpreté

parce que je n'ai pas de balises commentaires entourant le script dans mon fichier XSL, mais par contre j'en ai sur le fichier HTML généré en sortie. Ca se produit sur quelques autres scripts par ailleurs, et je me demandais pourquoi j'obtiens ces balises commentaires sur certains scripts ? ca m'aiderait à déterminer ce qu'il se passe et comment corriger cela si c'est d'Ametys que viennent ces balises commentaires.

Offline

#7 11/02/2014 18:08:22

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: script non interpreté

Oui, comme dit plus haut, c'est Ametys qui fait ça

Concernant le problème que vous évoquez, Ametys ajoute systématiquement des commentaires à l'intérieur des balises scripts par ce que c'est une des bonnes façon d'écrire une balise script.

et là, vous n'avez pas la main dessus pour faire autrement. Mais je n'ai jamais rencontré de problèmes avec ça (au contraire smile)


Raphael Franchet
Expert Ametys

Offline

#8 12/02/2014 11:21:43

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: script non interpreté

Mais dans le cas précis ci-dessus, cela n'empêche t il pas le script de s'exécuter puisque tout le contenu passe en commentaire ? Si ce n'est pas le cas, alors c'est peut être le chemin spécifié qui fait que je n'obtiens rien. Est-ce que la fonction SkinURL() avec une valeur vide peut retourner le chemin vers le répertoire resources du skin utilisé ? Sinon comment obtenir ce chemin vers un répertoire et non pas un fichier ?

Merci !

Offline

#9 12/02/2014 11:33:14

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: script non interpreté

Non les commentaires XML n’empêchent pas le script de s’exécuter. C'est une des bonnes façon d'écrire une balise javascript que j'indiquais plus haut.

Pour la fonction ametys:skinURL, elle peut prendre le path d'un fichier, d'un dossier, ou même la chaîne vide.

Pour savoir si votre fichier est chargé ou pas, utilisez un debugger javascript (F12 sur la plupart des navigateurs récents) et voyez si le fichier fait parti des scripts chargés. Puis regardez la console javascript.

Le seul cas tordu qui peut arriver, c'est si le script que vous utilisez s'appuie sur des balises <script> dont le type n'est pas text/javascript. Mais dans l'exemple que vous me donnez ce n'est pas le cas.


Raphael Franchet
Expert Ametys

Offline

#10 12/02/2014 18:27:40

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: script non interpreté

Merci, c'est résolu, j'investiguais dans la mauvaise direction.

Il me fallait cette ligne : var require = requirejs_config = {baseUrl: '<xsl:value-of select="ametys:skinURL('')"/>'};

Offline

Board footer

Powered by FluxBB