2012-05-05 73 views
1

雖然經歷的來源的Simple Drag and Drop雷米夏普的演示,我發現這個功能:這個字符串替換函數的目的是什麼?

function entities(s) { 
    var e = { 
    '"' : '"', 
    '&' : '&', 
    '<' : '<', 
    '>' : '>' 
    }; 
    return s.replace(/["&<>]/g, function (m) { 
    return e[m]; 
    }); 
} 

從我所看到的,它只是取代「或&或<或>與本身所以沒有必要。 。該功能

如何我錯了

更新:? 源可以通過點擊「查看源文件」頁面的結尾被視爲

+0

來源如何被查看?就像它沒有任何作用,如果在某些呈現實體的東西中看到它,它只會看起來像它沒有做任何事情,因爲用作字符替換的HTML實體將呈現爲字符而不是HTML實體當量。 –

+0

他點擊了頁面底部的「查看源代碼」鏈接(該鏈接展示了一種不當行爲,呈現特殊的&符號字符),而不是使用瀏覽器級別的源查看工具。 – apsillers

回答

2

我看着Chrome的頁面的源代碼與Ctrl+U,這是我發現:

function entities(s) { 
    var e = { 
    '"' : '&quot;', 
    '&' : '&amp;', 
    '<' : '&lt;', 
    '>' : '&gt;' 
    }; 
    return s.replace(/["&<>]/g, function (m) { 
    return e[m]; 
    }); 
} 

顯然,這做一些事情 - 即,它會替換特殊字符轉義形式。

你看到你做了什麼是,你正在瀏覽的「查看源文件」頁面上的源在HTML正在呈現原因。因此,當源「&quot;」字符串在「查看源」頁面上呈現時,它會在HTML頁面上顯示爲"。 HTML5Deom確實應該在他們的視圖源頁面(如&amp;quot;)上跳過「&」符號,以便它將在呈現的源頁面上正確顯示爲&quot;,但他們不這樣做。

+0

對不起。這是我的錯誤,當我**盲目**依靠查看源代碼在html中,他們提供,而不是與'視圖源'選項。非常感謝 :) –

1

你說得對。這個功能什麼都不做。

2

我不知道你在哪看過它(我在你給的站點找不到它),但是你可能誤讀了這個函數,或者在瀏覽器進行某種解析之後讀取它。

該功能最有可能是<&gt;&&amp;。因爲你已經通過瀏覽器看到過,所以瀏覽器將實體替換爲原始字符,導致< : <

如果這確實是原始函數並且沒有錯誤,則此函數不起作用。

1

我看着源和它說的:

function entities(s) { 
    var e = { 
    '"' : '&quot;', 
    '&' : '&amp;', 
    '<' : '&lt;', 
    '>' : '&gt;' 
    }; 

它的轉義特殊字符,因此HTML標籤和源可以看出,而不是解釋爲HTML。

0

我不知道你在哪裏找到了這個功能,但我想真相是對的。 這是我發現的

function entities(s) { 
    var e = { 
    '"' : '&quot;', 
    '&' : '&amp;', 
    '<' : '&lt;', 
    '>' : '&gt;' 
    }; 
    return s.replace(/["&<>]/g, function (m) { 
    return e[m]; 
    }); 
} 
相關問題