クライアント側でPageDownをエディタとして使用し、サーバー側でそのMarkdownをHTMLに解析しようとしています。PageDown ScriptEngineを間違って解析してマークダウンする
クライアント側でうまく動作しているようですが、サーバー側では、目盛りは、ラップする単語ではなく、後続の文字を「コード化」しているだけです。私はこれを行うのであれば:
test `test` test
を私はこれを期待し、これは、私はクライアント側で得るもの確かです:
test <code>test</code> test
しかし、サーバー側では、私はなって終わります代わりに、この:私はと呼ばれるファイルを作成しました
test <code>t</code>est<code> </code>test
この機能では、単にMarkdown.Converter.js
とMarkdown.Sanitizer.js
単一のファイルに結合しているは、追加:正しく表示さ
<!DOCTYPE html>
<html>
<head>
<script src="pageDown.js"></script>
<script>
function convert(){
var html = getSanitizedHtml("test `test` test");
console.log(html);
document.getElementById("content").innerHTML = html;
}
</script>
</head>
<body onload="convert()">
<p id="content"></p>
</body>
</html>
:
クライアント側でfunction getSanitizedHtml(pagedown){
var converter = new Markdown.getSanitizingConverter();
return converter.makeHtml(pagedown);
}
が、私はこのようにようにファイルを使用することができます。
0:(Java)のサーバー側で<p>test <code>test</code> test</p>
は、私はJavaのScriptEngineManager
とInvocable
を通じて、このまったく同じファイルを使用します<p>test <code>t</code>est<code></code>test</p>
私は他の値下げと同様の問題を参照してください:プログラムはこれを印刷し
import java.io.InputStreamReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class PageDownTest{
public static void main(String... args){
try{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval(new InputStreamReader(PageDownTest.class.getResourceAsStream("pageDown.js")));
Invocable inv = (Invocable) engine;
String s = String.valueOf(inv.invokeFunction("getSanitizedHtml", "test `test` test"));
System.out.println(s);
}
catch(Exception e){
e.printStackTrace();
}
}
}
test **test** test
を単に**
部分を無視します。ただし、##test
は正しく<h2>test</h2>
として返します。
私はJavaScriptをHTMLに直接渡すとうまく動作しますが、Javaを経由するとうまく動作しません。何が起きてる?私は、サーバー上でMarkdownを別々に扱うべきですか?
プロジェクトwikiには、サーバー上でNode.JSを使用していることが記載されています。それが最後の手段です。 – approxiblue
なぜこの質問に賞金があるのか分かりません。唯一の答えは、問題が使用されているライブラリのバグであることを明確に述べています。バグは、そのライブラリのメンテナにアップストリームで報告する必要があります。私たちが助けるためにここで何かできることはほかにありません。 – Waylan
@Waylan **の前に賞金が追加されました**。回答が掲載された唯一の理由は、賞金を追加したためです。それが賞金の仕組みです。 –