1

在浏览 Remy Sharp 的Simple Drag and Drop演示的源代码时,我发现了这个函数:

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

据我所知,它只是用自己替换了 " 或 & 或 < 或 >。所以不需要那个函数。

我怎么错了?

更新: 可以通过单击页面末尾的“查看源代码”来查看源代码。

4

5 回答 5

2

我不知道你在哪里看到它(我在你提供的网站上找不到它),但你可能误读了这个函数,或者在浏览器进行了某种解析后阅读了它。

该函数最有可能<&gt;&替换&amp;。因为您已经通过浏览器看到它,所以浏览器将实体替换回原始字符,导致< : <等。

如果这确实是原始函数并且没有错误,则该函数什么也不做。

于 2012-05-05T14:10:55.810 回答
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 页面上显示为". HTML5Deoms 确实应该在其查看源页面上转义与号&amp;quot;,这样它才能正确显示在呈现的源页面上&quot;,但他们不这样做。

于 2012-05-05T14:13:32.837 回答
1

你是对的。这个函数什么都不做。

于 2012-05-05T14:09:26.067 回答
1

我查看了源代码,它是这样说的:

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

它转义了特殊字符,因此可以看到 HTML 标记和源代码,而不会将其解释为 HTML。

于 2012-05-05T14:13:20.677 回答
0

我不知道您在哪里找到了该功能,但我想 Truth 是正确的。这就是我发现的

    function entities(s) {
  var e = {
    '"' : '&quot;',
    '&' : '&amp;',
    '<' : '&lt;',
    '>' : '&gt;'
  };
  return s.replace(/["&<>]/g, function (m) {
    return e[m];
  });
}
于 2012-05-05T14:16:26.313 回答