0

首先:我知道有数以百计的文章/问题与此标题相同或相似,但让我解释一下我想要实现的目标以及我的问题是什么

我有一个 Markdown 编辑器,我将在其中存储用户的内容,如果他们希望以后可以编辑该内容。

所以,在我的例子中,我elasticsearch用来存储所有用户的内容。

存储信息对我来说根本不是问题,但必须检索它并重新显示是一个巨大的问题,我现在正在尝试解决这个问题好几个小时。


使用这个 Markdown 编辑器,用户可以毫无限制地输入内容,我不确定这是否是我的 Markdown 编辑器错误处理所有这些内容的方式,但换行符在这里是一个大问题。

如果用户输入这样的内容

#Hello World

#Here you see I have two extra lines

#How about a video element here as well?


<iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>

#Damn cool!!

存储它显然没问题,但是当必须重新显示时editor

我收到这个错误。

Uncaught SyntaxError: Unexpected token ILLEGAL

幸运的是,我可以使用我之前在这里提出的问题中的一些内容来解决这个问题,但是一个问题解决了另一个问题。

问题的解决方案是做这样的事情

var your_content = '    #Hello World
    
    #Here you see I have two extra lines

    #How about a video element here as well?


    <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe>
    
    #Damn cool!!
';
var replaced_text = your_content.replace(/\n|\s/g, "");

但是使用上述解决方案,一切都会像这样显示:

#Hello World #Here you see I have two extra lines #How about a video element here as well? <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe> #Damn cool!

所以,代码的格式真的搞砸了,这是另一个问题,因为用户显然希望能够编辑他们的代码并具有良好的格式。

我正在使用这个 Markdown 编辑器http://dillinger.io

我的服务器是:Nodejs,所以我使用的一切都是 JavaScript

更新

这是代码的片段:

  var editor
    , converter
    , autoInterval
    , paperImgPath = '/img/notebook_paper_200x200.gif'
    , profile = 
      {
        theme: 'ace/theme/idle_fingers'
      , showPaper: false
      , currentMd: '{{contentMd}}' <---- this is the problem
      , autosave: 
        {
          enabled: true
        , interval: 3000 // might be too aggressive; don't want to block UI for large saves.
        }
      , current_filename : 'Filename'
      }

并且我将 {{contentMd}} 存储在哪里都没有关系,我仍然会收到该错误。如果我这样存储它们

var abcd = '{{contentMd}}';

所以contentMd它是从服务器传递的东西,它包含我在顶部发布的所有内容。

4

1 回答 1

2

我认为这就是发生的事情:

> var s = 'long string
with carriage return';
SyntaxError: Unexpected token ILLEGAL

这是来自 Chrome 的控制台窗口。

在将字符串粘贴到 javascript 之前尝试替换\n服务器上的所有字符:'\n'

> var s = 'long string\nwith carriage return';
undefined
> s
"long string
with carriage return"
于 2013-07-06T05:08:29.453 回答