1

jquery.zclip と Symfony2 フレームワークを使用して、テキストをクライアントのクリップボードにコピーしています。それは正常に動作しますが、アポストロフィが & # 0 3 9 に変換されるという事実のためです。(スペースなし)

この問題は、アポストロフィを HTML エンティティに変換する Twig テンプレート エンジンに起因しているようです。

Twigがこれを行うのを防ぐための解決策を見つけたいと思います。それとも、zclip を呼び出す前にアポストロフィに戻しますか?

どうやってそれをしますか?

これが私のjquery/twigコードです:

<script>
    $(document).ready(function(){
        $('img#copy-description').zclip({
            path:"{{ asset('bundles/yopyourownpoet/flash/ZeroClipboard.swf') }}",
            copy:"{{ introLine1 }}{{ introLine2 }}{{ introLine3 }}{{ introLine4 }}{{ introLine5 }}",
            afterCopy:function(){
                alert('The poem has been copied to the clipboard.');
            },
        });
    });

</script>

このコードは次のようになります。

$(document).ready(function(){
    $('img#copy-description').zclip({
    path:"/yourownpoet/web/bundles/yopyourownpoet/flash/ZeroClipboard.swf",
    copy:"Franz, hope Boston treats you wellDaddy, I have a story to tellIf you do not mindI&#039;ll promise it&#039;s kindLike the sweet ringing of a bell",
    afterCopy:function(){
    alert('The poem has been copied to the clipboard.');
    },
});

編集:私はどちらもうまくいかないことをもっと試しました:

    function escape(string)
    {
        return string.replace("&#039;", "'");
    }

        $('img#copy-description').zclip({
            path:"{{ asset('bundles/yopyourownpoet/flash/ZeroClipboard.swf') }}",
            copy: escape("{{ introLine1 }}")+"\n"+escape("{{ introLine2 }}")+"\n"+escape("{{ introLine3 }}")+"\n"+escape("{{ introLine4 }}")+"\n"+escape("{{ introLine5 }}"),
            afterCopy:function(){
                alert('The poem has been copied to the clipboard.');
            },
        });

しかし、私はまだアポストロフィの代わりにコードを取得しています...

4

2 に答える 2

1

変数が安全であると考える場合は、フィルターを使用します。

{{ var|raw }}

自動エスケープ戦略を JavaScript に変更することもできます (おそらくより良いオプションです)。

{% autoescape true js %}
<script>
    $(document).ready(function(){
        $('img#copy-description').zclip({
            path:"{{ asset('bundles/yopyourownpoet/flash/ZeroClipboard.swf') }}",
            copy:"{{ introLine1 }}{{ introLine2 }}{{ introLine3 }}{{ introLine4 }}{{ introLine5 }}",
            afterCopy:function(){
                alert('The poem has been copied to the clipboard.');
            },
        });
    });
</script>
{% endautoescape %}

http://twig.sensiolabs.org/doc/api.html#escaper-extension

于 2012-05-17T07:42:04.687 に答える
0

別の方法

string_name = '{{ string_name|e('js')|raw }}';
于 2014-02-11T18:38:41.163 に答える