我们刚刚推出了新的Magento网站,并且标签后面的引号中出现了字母“c”。它没有出现在我的本地机器或我们的QA网站上,我检查了模板文件,它也不存在。我几乎可以肯定它不会是代码问题,因为我们在本地和我们的QA网站上使用GIT进行版本控制时运行相同的代码。
我们已经清除了缓存,并且我已经尝试检查JavaScript是否使用chrome dev工具插入它但却找不到任何内容。
奇怪的是,'c'不在视图源文档中,但我可以使用chrome检查器看到它。
我也不认为它可以来自Magento CMS页面/块,因为它会在标签后立即加载。
答案 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>