2

フォーラムベースのウェブサイトを作成している学校のプロジェクトに取り組んでいます。PageDownPrettifyを使用してテキストを処理しています。
しかし、今のよう<!--?prettify?-->に、コードをうまくスムーズにするためにコードを使用する必要がありますが、プログラムに<pre>、PageDown からのすべてのタグを prettify で自動処理するように指示できる方法はありますか?

自動 SyntaxHighlighter を使用することの欠点はありますか?

1#可能な解決策ですが、私が考えていたものではありません:

$("pre").addClass("prettyprint");JavaScriptに追加できます。このコードはすべての pre タグに prettyprint クラスを付与しますが、この短いコードは Markdown プレビューでは機能しないため、私にとっては 50% の解決策にすぎません。

2# プレビューでは可能な解決策ですが、ユーザーフレンドリーではありません:

prettyPrint();ですべての<pre>タグを強調表示する関数を呼び出すことができることがわかりましたclass="prettyprint"。したがって、ソリューションをこれと組み合わせてsetInterval()(または のようなもの.click) を追加して呼び出しを行うと、Markdown プレビューで動作するものを取得できます。この方法はユーザー フレンドリーではないと思います。なぜなら、コンピューターの処理能力を大量に使用しているからです (私はそう思います) <pre>
これはコードです:

var timer = setInterval(prettytimer, 0);

function prettytimer() {
    $("pre").addClass("prettyprint");
    prettyPrint();
};

.removeClass()なぜまたはhasClass()チェックがないのか疑問に思っている人がいれば、それ.addClass()は同じクラスを2回追加しないためです。

4

1 に答える 1

0

私が行った3#ソリューション:

これは、プレビュー ハンドラー サイトで使用したソリューションであり、残りの Web ページではソリューション1#です。いくつかのより良い方法があるかもしれませんが、この方法でスタック オーバーフローの感覚が得られます。

var timer;

//If the code button have been pressed {}
$("#wmd-code-button").click(function () {
    clearTimeout(timer);
    timer = setTimeout(prettytimer, 3000);
});

//when on key have been released inside textarea
$(".wmd-input").on("keyup", function () {
    clearTimeout(timer);
    timer = setTimeout(prettytimer, 3000);
});

//If `timer` reach 3000 (3 seconds) execute this
function prettytimer() {
    $("pre").addClass("prettyprint");
    prettyPrint();
};

使用している場合はpageDown Markdown、このコードを変更する必要はありません。javascript ファイル内にコピーするだけです :)

于 2016-05-25T18:14:02.543 に答える