Smarty 3在javascript中打破了html

Smarty 3 breaks at html in javascript

本文关键字:html javascript Smarty      更新时间:2023-09-26

当我在变量中放入一些html时,Smarty 3会破坏我的javascript。

My code(缩写):

 <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>

当我查看网站的源代码时,它中断并关闭了html标签:

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

即使我把整个html放在一行变量中,它也会在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>

变成:

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

这真的很奇怪。什么好主意吗?

提前感谢!

我想你应该把<script>标签也包装在{literal}块中,而不是只是它的内容。

<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>

这很奇怪;可能是您的浏览器或服务器上的某些脚本出于某种原因试图"修复"HTML。此外,您不需要使用{literal}。

也许你可以在javascript代码中打破标签,例如:

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

您可以尝试的另一种方法是对脚本进行html注释。现代浏览器不需要它,但值得一试:

<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>