[英]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.