在身体标签后出现的引号中的字母

时间:2014-11-05 18:40:22

标签: javascript html magento dom

我们刚刚推出了新的Magento网站,并且标签后面的引号中出现了字母“c”。它没有出现在我的本地机器或我们的QA网站上,我检查了模板文件,它也不存在。我几乎可以肯定它不会是代码问题,因为我们在本地和我们的QA网站上使用GIT进行版本控制时运行相同的代码。

我们已经清除了缓存,并且我已经尝试检查JavaScript是否使用chrome dev工具插入它但却找不到任何内容。

奇怪的是,'c'不在视图源文档中,但我可以使用chrome检查器看到它。

enter image description here

我也不认为它可以来自Magento CMS页面/块,因为它会在标签后立即加载。

2 个答案:

答案 0 :(得分:1)

感谢您的链接。在查看页面源之后,标题区域中有一个额外的c字符:

    <!-- END GOOGLE ANALYTICS CODE -->
c<script type="text/javascript">//<![CDATA[
        var Translator = new Translate([]);
        //]]></script>

请注意脚本标记之前的c?

答案 1 :(得分:1)

只是支持Benny Lin的非常有用的答案。

发生了什么事情,我们从模板文件中加载了Google Analytics代码,其中包含了流浪字母&#39; c&#39;。我们可以在本地计算机上看到这一点,因为这些模板在Magento管理员设置中被禁用,但在生产时没有。

此问题似乎表明,当您的开发工具检查器上的<body>标记中出现流浪字母而不是视图源页面时,可能是因为它位于<head>部分。在渲染时,浏览器似乎会将所有格式不正确的html从<head>部分推送到<body>部分。

例如,如果您在Chrome浏览器中打开以下html,您将看到我的意思:

<!DOCTYPE html>
<html>
<head>
c<title>Title of the document in head</title>
<script type="text/javascript">
  var test = "test";
</script>
</head>

<body>
The body of the document......
</body>

</html>

同样在我们搜索流浪信时,我们可以使用下面的JavaScript删除它,该JavaScript使用XPath表达式定位DOM中有问题的XML节点,并仅删除该节点。

<script type="text/javascript">
  function _x(STR_XPATH) {
      var xresult = document.evaluate(STR_XPATH, document, null, XPathResult.ANY_TYPE, null);
      var xnodes = [];
      var xres;
      while (xres = xresult.iterateNext()) {
          xnodes.push(xres);
      }    
      return xnodes;
  }
  jQuery(_x('//html/body/text()[contains(.,"c")]')).remove();  
</script>