2010-09-01 35 views
4

我在網上找到了一些我想使用的代碼。引用了一個字符串

$(document).ready(function() { 
$(".fbreplace").html.replace(/<!-- FBML /g, ""); 
$(".fbreplace").html.replace(/ -->/g, ""); 
$(".fbreplace").style.display = "block"; 
}); 

的問題是瀏覽器認爲

<!-- 

是一個真正的評論。我如何引用它來告訴瀏覽器查找該字符串,並且它不是真正的評論?

+1

['html'](http://api.jquery.com/html/)是一種方法而不是屬性。 – Gumbo 2010-09-01 17:45:04

+1

您可以將兩個正則表達式組合爲'/ <! - \ - FBML | - \ - >/g'。 – kennytm 2010-09-01 17:45:39

+0

這是哪款瀏覽器和哪種版本的瀏覽器? – 2010-09-01 18:27:00

回答

6

轉義其中一個符號不會改變正則表達式。你可以用一個反斜槓來防止瀏覽器解釋--作爲HTML註釋的開頭或結尾:

/<!-\- FBML /g 

話雖如此,我不知道任何現代的瀏覽器會曲解一段JavaScript的作爲評論,如果Javascript被正確包含在<script>標記中。

+0

您應該更好地分割'<!',因爲它已經是[SGML中的標記](http://www.is-thought.co.uk/book/sgml-4.htm#Fig4-4)(標記聲明打開) 。 – Gumbo 2010-09-01 17:47:48

+0

@Gumbo:也許這兩個... Javascript代碼可能已經在HTML註釋中。 – 2010-09-01 17:51:39

+0

然後,在關閉的' - >'中應該應用'--'。 – Gumbo 2010-09-01 17:52:29

3

我覺得這是你的整體後在做什麼:

$(function() { 
    $(".fbreplace").html(function(i, html) { 
    return html.replace(/<!-\- FBML | -->/g, ""); 
    }).show(); 
});​ 

You can give it a try here.html不是一個jQuery對象,你可以修改的屬性,你可以傳遞但是一個功能.html()並執行.replace()每次出現。

+0

@ nick-craver。它在jQuery 1.4.2中工作,但我的服務器上有1.3.2。無論如何,讓它爲1.3.2工作? – keith 2010-09-01 18:10:53

+0

@keith - 以下是1.3.2版本:http://jsfiddle.net/nick_craver/Rzqdk/4/ – 2010-09-01 18:16:14

+0

@ nick-craver - 非常感謝。現在我只需要弄清楚如何替換html標記中的xmlns:fb =「http://www.facebook.com/2008/fbml」,以便我的頁面進行驗證! – keith 2010-09-01 18:57:50

0

作爲其他答案建議,而不是逃避正則表達式,如果我是你,我會把代碼放在外部文件中。這樣它也可以被緩存,使其效率更高一些,行爲(腳本)和結構(標記)之間會有更多的分離,使您的項目更易於管理。

相關問題