簡體   English   中英

如何在加載run_prettify.js之后重新應用prettyPrint

[英]How to re-apply prettyPrint AFTER run_prettify.js has been loaded

我正在嘗試使用Javascript代碼美化,然后提出一個問題。

如果我沒有將class="prettyprint"分配給靜態html中的<pre> ,但希望稍后應用prettyprint(例如,當用戶點擊我網頁上的“colorize”按鈕時), 我該如何實現?

略微修改原始的run_prettify.js或prettify.js是可以接受的,因為我將把它用於離線使用。

我的實驗:

編寫try-delay-class.html:

<html>
<head>
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>
</head>
See it:
<pre>
class Voila {
public:
  // Voila
  static const string VOILA = "Voila";

  // will not interfere with embedded <a href="#voila1">tags</a>.
}
</pre>
</html>

在Chrome v26中打開,調出控制台,執行:

pres=document.getElementsByTagName('pre')
pres[0].className+=" prettyprint"

語法顏色沒有出現。

在此輸入圖像描述

根據這里發現的評論, 如何獲得使用動態生成的dom元素的prettyprint ,我找到了出路。 只需致電:

PR.prettyPrint()

順便說一句:如果你想刪除代碼顏色高亮,你不能簡單地將pre的類設置為空,然后PR.prettyPrint()設置為空。 PR.prettyPrint()只能附加顏色標簽但不能刪除它們。 一種可行的方法是在應用prettyprint之前保存原始的<pre>內容,然后再恢復<pre>的內容。 在我的帖子jQuery中驗證過,如何克隆保存的元素?

在此輸入圖像描述

你可以在這里找到三個例子

我在js中做了如下:

document.getElementById('outputa').innerHTML = 
 PR.prettyPrintOne("your code in brackets or your variable (without these brackets)",
 'java');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM