Benny Lin의 매우 유용한 답변을 지원합니다.
Google Analytics 코드가 길잃은 문자 'c'가 들어있는 템플릿 파일에서로드되는 중 무슨 일이 발생 했습니까? 이 템플릿은 Magento 관리자 설정에서는 사용할 수 없지만 프로덕션에서는 사용할 수 없기 때문에 로컬 시스템에서이 값을 볼 수 있습니다.
이 문제는 dev 도구 검사기의 <body>
태그 내에 표시되지 않는 문자가있는 경우 표시 소스 페이지가 아니라 <head>
섹션에 있기 때문에 표시 될 수 있습니다. 브라우저는 렌더링 할 때 <head>
섹션의 형식이 잘못된 모든 HTML을 <body>
섹션으로 푸시하는 것처럼 보입니다. 당신은 크롬 브라우저에서 아래의 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>
을 우리가 부유 편지를 검색하는 동안, 우리는 자바 스크립트 아래에 그것을 제거하기 위해 유능했다 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>
페이지 소스에 없다면 JS에 의해 확실히 추가됩니다. 대신 거기에 있어야 할 다른 것이 있습니까? 나는 그것을 문자열 ('var [0]')로 대체 한 배열일지도 모른다고 생각하고있다. 그래서 당신은 그것이 무엇이든간에 첫번째 문자를 얻는다. – Shomz
@Shomz 덕분에 어떻게 이런 문제를 일으키는 스크립트를 식별 할 수 있을까요? body 태그의 하위 트리 수정을 중단하도록 크롬 관리자를 설정했지만 jQuery에서만 중단됩니다. – Holly
안녕하세요. 불행히도, 간단하지만 쉬운 것은 내 마음에 오는 것이 아니라 DOM (innerHTML, textContent 등)을 수정하는 "무차별 대항"검색입니다. 또는 많은 양의 스크립트를로드하는 경우 하나씩 문제를 해결할 수 있도록 스크립트를 하나씩 비활성화 해보십시오. – Shomz