2015-09-23 2 views
2

Smarty 3 casse mon javascript quand je mets du html dans une variable.Smarty 3 casse au html en javascript

Mon code (raccourci):

<section id="map"> 
    <script> 
     {literal} 
      var contentString = '<div id="content">'+ 
       '<div id="siteNotice">'+ 
        '</div>'+ 
        '<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+ 
        '<div id="bodyContent">'; 
     {/literal} 
    </script> 
</section> 

Quand je regarde dans le code source du site il se casse et ferme les balises html:

<script> 
    var contentString = '<div id="content">'+ 
      '<div id="siteNotice">'+ 
      '!!!</script></section>!!!</div>'+ 
      '<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+ 
      '<div id="bodyContent">'; 

Même quand je mets tout le html dans la variable en une ligne il se brise après le premier/dans le html ..

<section id="map"> 
    <script> 
    {literal} 
     var contentString = '<div id="content"><div id="siteNotice"></div><h1 id="firstHeading" class="firstHeading">Uluru</h1><div id="bodyContent">'; 
    {/literal} 
    </script> 
</section> 

Se transforme en:

var contentString = '<div id="content"><div id="siteNotice"></script></section></div>'; 

Ceci est vraiment étrange. Des idées?

Merci d'avance!

Répondre

1

Je suppose que vous devriez envelopper <script> tag dans le bloc {literal} aussi, ne soutient pas son contenu.

<section id="map"> 
    {literal} 
     <script>  
     var contentString = '<div id="content">'+ 
      '<div id="siteNotice">'+ 
      '</div>'+ 
      '<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+ 
      '<div id="bodyContent">';  
     </script> 
    {/literal} 
</section> 
+0

Merci. Mais cela ne change rien. Même quand je ne place pas de balises littérales autour du code, ça casse. :( –

0

C'est très étrange; il peut s'agir de votre navigateur ou d'un script sur votre serveur essayant de "réparer" le code HTML pour une raison quelconque. En outre, vous n'avez pas besoin d'utiliser {literal}.

Peut-être que vous pouvez casser les balises dans votre code javascript, à savoir:

'<'+'div id="content">'+ 

Une autre chose que vous pouvez faire est de commentaire HTML le script. Les navigateurs modernes ne l'exigent pas, mais ça vaut le coup d'essayer:

<section id="map"> 
    <script> 
     <!-- 
      var contentString = '<div id="content">'+ 
       '<div id="siteNotice">'+ 
        '</div>'+ 
        '<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+ 
        '<div id="bodyContent">'; 
     //--> 
    </script> 
</section>