0

我正在将 firepad 与我的 django 项目集成。我在javascript方面没有太多专业知识,因此我面临一个问题。

如果我按照所有步骤操作,一切似乎都运行良好。

<script>
    //// Initialize Firebase.
    //var firepadRef = getExampleRef();
    // TODO: Replace above line with:
     var ref = new Firebase('<YOUR FIREBASE URL>');

    //// Create CodeMirror (with line numbers and the JavaScript mode).
    var codeMirror = CodeMirror(document.getElementById('firepad-container'), {
      lineNumbers: true,
      mode: 'javascript'
    });

    //// Create Firepad.
    var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror);

    //// Initialize contents.
    firepad.on('ready', function() {
      if (firepad.isHistoryEmpty()) {
        firepad.setText('// JavaScript Editing with Firepad!\nfunction go() {\n var message = "Hello, world.";\n console.log(message);\n}');
      }
    });
  </script>

但是,我在通过 django 视图呈现的页面上有一个名为“用户”的字典变量。

我想在上面的例子中使用这个变量作为 {{user.textkey}} 而不是固定的默认文本。textkey 指向一个文本。

user = {'textkey':text}

像这样的东西: -

firepad.setText('{{user.textkey}}');

我希望你明白我的意思。这里的问题是文本可能包含诸如撇号或 unicode 字符(如左或右单引号)等的任何内容。django 还会替换变量中的 \n 并导致 javascript 不支持的格式。

例如:-

如果文本包含

Hello \xe2\x80\x98World\xe2\x80\x99:\n Good morning:\n 

然后

firepad.setText('{{user.textkey}}');

看起来像这样

firepad.setText('{{Hello 'World'
Good morning
}}');

javascript无法理解。

如何解决这个问题?

欢迎任何形式的建议。

4

1 回答 1

2

你可以试试

firepad.setText('{{user.textkey | escapejs}}')

我发现记录在这里

于 2014-05-22T22:07:25.523 回答