2012-09-10 34 views
1

我正在尝试在JavaScript变量(foo)中获取自定义通道字段(chan_body)的内容。我已经在我的config.php文件中设置了
$ config ['protect_javascript'] =“n”;我有我的chan_body 'Type'=>'TextArea''默认文字格式=>'无'问题是这个通道字段实际上是一对线,实际上是另一种语言的代码(即不意味着被执行),但它并没有得到逃避,只是通过在那里倾倒JavaScript来搞砸了。我怎样才能解决这个问题?我试图越狱()没有帮助JavaScript中的表达式引擎字段

{exp:channel:entries channel="mychannel" category="2"} 
    <script type="text/javascript"> 
     var foo = "{chan_body}"; 
     alert(foo); 
    </script>  
{/exp:channel:entries} 

转化为

<script type="text/javascript"> 
    var foo = "my $testing = "myfile.txt"; 
    Uncaught SyntaxError: Unexpected identifier 
    open(FILE,"$myfile ") or die; 
    # this is a comment 
    alert(foo); 
</script>  

回答

0

缺少$测试后报价

var foo = "my $testing" = "myfile.txt"; 
+0

foo =之后的所有内容当{chan_body}通道字段运行时,我试图在foo javascript变量中获取此字符串内容。 – user391986

+0

啊对不起,好的,所以{chan_body}提供内容''my $ testing =“myfile.txt”',那么chan_body的内容会混合引号​​,chan_body如何创建或设置,或者您是如何/在哪里得到它的价值从? – dbf

1

JavaScript并没有花太多很好地多行字符串。请参阅How to create multi-line strings。要直接将其注入到变量中,您需要在新行结尾处使用反斜杠\,并且还要转义任何双引号。

但谁愿意那样做?

一个循环的方法可能是将您的字段的内容放入divdisplay:none并以此方式访问它。

{exp:channel:entries channel="mychannel" category="2"} 
    <div id="entry-{entry_id}" style="display:none;">{chan_body}</div> 

    <script> 
    var foo = document.getElementById('entry-{entry_id}').innerHTML; 
    alert(foo); 
    </script>  
{/exp:channel:entries} 
+0

谢谢!会尝试,虽然它可能会增加一点复杂的给定的JavaScript框架我正在与我想保持对象的一切 – user391986

2

分配给foo时,您可以使用base64编码对chain_body中的值进行编码,并且您需要使用该值时,可以对其进行解码。

例如

var foo = BASE64_ENCODE("{chan_body}"); 

您可以在这里看到的东西在javascript如何BASE64工作。 How can you encode a string to Base64 in JavaScript?

+0

好主意!我会试试这个 – user391986