首先:我知道有相同的标题或类似于这个的文章/问题,但让我解释一下我想要达到的目标,这里有什么问题
我有一个Markdown编辑器,我将存储用户的内容,如果他们希望以后可以编辑该内容。
因此,在我的情况下,我使用elasticsearch
将所有用户的内容存储在那里。
存储信息对我来说根本不是问题,但是必须检索它并重新显示是一个很大的问题,我现在正试图解决这个问题很长时间。
使用这个Markdown编辑器,用户可以输入一些没有任何限制的东西,我不确定这是否是我的Markdown编辑器错误地处理所有这些东西的方式,但这里的换行是一个很大的问题。 / p>
如果用户输入类似
的内容#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
它是从服务器传递的内容,它包含我在顶部发布的所有内容。
答案 0 :(得分: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"