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

幸いなことに、以前にここで尋ねた質問から何かを使用してこの問題を修正できますが、1 つの問題を修正すると、別の問題が発生します。

問題の解決策は、このようなことをすることでした

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 に答える