2012-09-10 65 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