2017-04-20 10 views
0

PHPからのテキストをエコーし​​て、HTMLページのAJAX呼び出しでページに読み込まれています。 Highlight.jsがこのテキストを読んで、私の構文を強調してほしい。ただし、テキストは強調表示されません。これをHTMLページで直接行うと、PHPからエコーされたテキストのHighlight.jsが機能しない

<pre> 
    <code id=resultDiv style="text-align:right;"> 
     <p> int main() </p> 
    </code> 
</pre> 

が動作します。 int main()が強調表示されています。ただし、ページに私のPHPファイルから同じresultDiv へ

echo 
    "int main()"; 

あるいは

echo "<p> int main() </p>" 

が強調表示されません。

修正プログラムはありますか?なぜこれが起こるのですか?

+0

@stackundeflow後続のHTMLの書式設定を歪ませると(例えば 'echo'を介して)私は書式設定を改善したい –

答えて

1

あなたの質問を正しく理解していれば、Ajaxを使用してPHPページからコンテンツを読み込んでいます。

highlight.jsを使用すると、htmllightを実行し、 "load"イベントの後にすべてを強調表示しますが、このイベント後にAjaxコールが非同期に発生します。つまり、hightlight.jsがパスした後にコンテンツが読み込まれます。

highlight.jsは、パスを強調したコードをトリガーするhighlightBlock functionは、あなたのケースでは、それはあなたが持っているでしょう

hljs.highlightBlock(document.getElementById("resultDiv")); 

は、あなたのコンテンツがある後を置くために、次のコード行のようになります持っていますDOMに追加されました

+0

ありがとうございました!最初は、initHighlighting()を実行しようとしましたが、それは何らかの理由で動作しませんでした。私はhighlightBlockがうれしいです! – stackunderflow

+0

これは、initHighlighting()がハイライトパスをloadイベントにバインドするだけなので、そのイベントが既に発生しても何も起こりません – nickforall

関連する問題