1

私はこのようなことをしたい:

<script>
var text = "this is some sample text that i want to replace";
var new_text = text.replace(/'/g, "\\'");
var new_text = text.replace(/"/g, "\"");
document.write(new_text);
</script>

しかし、var に " がある限りtext var text = "this is some sample "text" that I want to replace";、javascript が壊れてしまい、置き換えることができません。

私の var テキストは modx CMS の小さな mce フィールドから取得されるため、[[*content]] のように表示される $ のようなものです。

そして、これは私のmodxテンプレートコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>[[*titrepage]]</title>
<style type="text/css">
div.code_view {
    height:auto;
    }

div.code_demo {

    /* margin:1em auto 1.4em; */
    border:1px solid #ddd;
                width: 535px;
                color: #112433;

    }

div#content div.code_demo ul.demoLinks {
    margin:6px 6px 10px;
    }

div#infoDiv { 
   padding:0 8px 8px;
   }



div#infoDiv h4 {
    margin:4px 0;
    font-size:1.1em;
    }

</style>
<script src="http://aurorafilms.eskem-studio.com/assets/templates/aurora/js/dw_contentswap.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">

function init_ContentSwap() {
    var swap1 = {
        restoreDefault: false,
        content: {
            'old': "<h4>Synopsis</h4><p>[[*synopsis]]</p>",
            'infos': '<h4>Infos</h4><p>[[*infos]]</p>',
                                            'presse': "<h4>Presse</h4><p>[[*Presse:jsonEncode]]</p>",
            'festivals': "<h4>Festivals</h4><p>[[*festival]]</p>"


        }
    }

    dw_ContentSwap.setup(swap1);
}

dw_Event.add(window, 'load', init_ContentSwap);

</script></head>
<body>  
<div id="page">    <ul class="demoLinks">
        <li style="z-index: 10; width: 80px; position: relative; "><a href="#old" class="showInfo old">Synopsis</a></li>
        <li style="z-index: 9; width: 80px; position: relative;  left: -20px;"><a href="#infos" class="showInfo infos">Infos</a></li>
        <li style="z-index: 8; width: 80px; position: relative;  left: -40px;"><a href="#presse" class="showInfo presse">Presse</a></li>
        <li style="z-index: 7; width: 80px; position: relative;  left: -60px;"><a href="#festivals" class="showInfo festivals">Festivals</a></li>

    </ul><div id="content" style="float: left;" >
            <div id="text">
<!-- demo -->

<div class="code_demo">


    <div id="infoDiv"><h4>Synopsis</h4><p>[[*synopsis]]</p></div>
</div>


<!-- end demo -->

<p class="clearer">&nbsp;</p></div> </div>  </div>    



</body>
</html>

では、これを行う最善の方法は何ですか?

4

2 に答える 2

1

問題は、リソースのコンテンツを javascript 文字列 (modx パーサーによって挿入される) として使用しようとしていることです。ただし、javascript でハードコーディングされた文字列は、いくつかの規則に従う必要があります (エスケープされた改行がないか、適切な引用符のみ)。そのため、単純に引用符で囲むだけでは、最も単純な場合にのみ役立ちます。

問題を解決するには、次のことを試してください。

1.次の内容で呼び出される新しいスニペットを作成します。jsonEncode

<?php
return json_encode($input);

2. リソース コンテンツを使用する JavaScript コードを次のように変更します。

var text = [[*content:jsonEncode]];

リンク:


アップデート

追加されたコードを見て、別のアプローチをお勧めします。上記で説明したように、ネストされた modx-variables を使用している場合、おそらく壊れます。最も安全な方法は、js でアクセスできるようにする必要があるコンテンツを非表示の div にレンダリングすることだと思います。そして、innerHTMLその要素から を抽出します。

于 2013-01-18T12:14:29.807 に答える
0

試す:

<script>
var text = "this is some sample text that i want to replace";
var new_text = new_text.replace(/["']/g, "'")
document.write(new_text);
</script>
于 2013-01-18T12:13:45.623 に答える