zoukankan      html  css  js  c++  java
  • 如何处理JS与smarty标签的冲突

    smarty的默认标记符是大括号:{},

    假如我们页面上有JS且定义了函数或者对象,或者有CSS定义了样式,就会出现大括号,

    smary引擎就会把这些大括号当作smarty语法来解释,

    很明显,这些CSS样式属性和JS里的语法,不是smarty的语法,

    smarty引擎就会报错。

    解决办法一、修改smart默认定界符,在php中,修改smarty对象的$left_delimiter和$right_delimiter属性。

    很多人喜欢改为<{和}>,也有人改为<!--{和}-->,这看个人喜欢了。

    $smarty = new Smarty();

    $smarty->left_delimiter = "<{";

    $smarty->right_delimiter = "}>";

    这样,就能很好地避免了冲突问题,但是缺点也很明显,

    通用性和可读性。

    你习惯了用<{,他习惯用<!--{,还可能有人习惯用{{;

    如果带有<和>,想想在HTML标签里面需要使用的情况

    <input type="checkbox" <!--{if $checked}--> checked=""<!--{/if}--> />

    大家可以把这句放到DW里看看效果。

    个人不是很赞同改定界符来解决这个冲突问题。

    作为smarty的开发者,他们肯定懂HTML、CSS、JS的,他们肯定知道这个大括号会有冲突的,

    所以,smarty本身肯定会有解决办的,那就是{literal}和{/literal}

    将不想被smarty解释的HTML用{literal}和{/literal}包起来。

    {literal}
    <script type="text/javascript">
    function myFun(){
     
    }
    </script>
    {/literal}
     

    如果我们需要将php变量传递给js,可以这样

    <script type="text/javascript">
    var chk = "{$checked}";
    {literal}
    function myFun(){
     
    }
    {/literal}
    </script>
     

    {literal}和{/literal}使用的位置,不需要强求在HTML里的“配对位置”,即可以这样:

    <header>
    <script type="text/javascript">
    var chk = "{$checked}";
    {literal}
    function myFun(){
     
    }
    </script>
    </header>
    <body>
    {/literal}
  • 相关阅读:
    xls与csv文件的区别
    青音,经典爱情语录
    win7用户账户自动登录方法汇总
    How to using Procedure found Lead Blocker
    FTS(3) BSD 库函数手册 遍历文件夹(二)
    FTS(3) BSD 库函数手册 遍历文件夹(一)
    DisplayMetrics类 获取手机显示屏的基本信息 包括尺寸、密度、字体缩放等信息
    About App Distribution 关于应用发布
    FTS(3) 遍历文件夹实例
    OpenCV 2.1.0 with Visual Studio 2008
  • 原文地址:https://www.cnblogs.com/as3lib/p/6501758.html
Copyright © 2011-2022 走看看