2013-02-17 58 views
0

一些方法來思考這個問題。自己決定哪個對你最有用...我可以逃避一個類內的html標籤(重新創建xmp標籤)嗎?

  • 可以javascript重新創建不贊成的<帶有「xmp」類的xmp>標記嗎?
  • 我們可以模仿SO的降價處理器的內聯代碼中的轉義標籤嗎?
  • (metaSO,我承認)SO的md處理器如何在內聯代碼中轉義標籤?
  • 我們可以在HTML中嵌入的降價代碼塊中逃脫<嗎?

的目標是:逃逸<,使該類包含文本類< HTML>,<體>,<頭>,< SCRIPT>,<風格>,<身體>,以及任何其他標記不屬於<體內>或專門加工,不含專門加工。

< xmp>實現了這個(並且實際上繼續 - 不推薦使用,但仍然支持瀏覽器):<xmp><body></xmp>就像&lt;body&gt;。 SO的降價處理器實現該中內聯代碼:顯示<body>只寫`<體>`(其本身是\`& LT;身體> \`和不能被包括在SO代碼塊&hellip;我不唯一一個誰可以利用這一點;)

我的解決方案至今—所有<&lt; —更換負責的特少的HTML標籤(有沒有爲這些批內<體>靜態內容標籤的名稱<? div>,< code>,< span>等),但「特殊」標籤仍然必須是st藝術與& lt;而不是<

Javascript: 
xmps = document.getElementsByClassName('xmp'); 
for (var i = 0; i < xmps.length; i++) { 
    var xmp = xmp.item(i); 
    var newhtml = xmp.innerHTML.replace(/\&gt;/g,"\>").replace(/\&lt;/g,"\<"); 
    xmp.innerHTML = newhtml; 
    } 

有了,我可以寫<div class="xmp">&lt;body></div>

什麼讓

<div class="xmp"><body></div>

還是怎麼樣?

<div class="xmp"> 
    <body> 
    &/div> 
</div> 

我的項目的細節可能無關緊要:有會在class="xmp"降價,所以我們必須要小心行初始>秒。沒有用戶輸入,所以安全性不是(?)問題。我希望有一個不使用jQuery的解決方案。

回答

0

您無法使用JavaScript創建xmp的功能,因爲該功能與HTML解析有關。當JavaScript可以使用它時,瀏覽器已經對該元素進行了解析。

另一方面,我不認爲有任何需要。據我所知,所有瀏覽器都支持xmp,HTML5 CR要求保留支持,新瀏覽器也要實現。它還表示作者不能使用它,但這並不意味着xmp不起作用。

+0

確實'xmp'仍然是瀏覽器支持的,所以如果你想繼續使用它,我想你可以。但是,這並不是長壽的承諾,我個人不會使用它。 事實上,Pagedown(SO的降價解析器)能夠將\'< body \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \所以一些& lt;詭計 - 或東西 - _is_可能。 – henry 2013-02-19 17:29:53