2016-08-11 8 views
1

내가 크롬 콘솔에서이 HTML을 읽으려고하고있는 HTML 요소에 null를 돌려줍니다 이 줄을 실행하면 null 또는 invalid가 반환됩니다. 요소를 검사하고 코드를 실행하면 의도 한대로 작동하고 "Kr 79"를 반환합니다. 그래서, 내가 모르는 DOM 문제입니까, 아니면 브라우저 별 문제입니까?자바 스크립트가 크롬, 소스

Google 태그 관리자에서이 값을 변수로 사용하고 있는데, 50 %의 경우에서 작동합니다. 웹 페이지 자체의 소스 코드에 액세스 할 수 없기 때문에 데이터를 가져 오는 다소 힘든 방식을 사용해야합니다.

많은 게시물은 DOM 준비가되기 전에 스크립트가 시작되었지만 문제가 아니라고 생각합니다. 페이지가로드 된 후에도 콘솔에서 테스트 중이므로 (HTML 요소가 있음) Google 태그 관리자에서 DOM 준비가 완료되면 태그가 실행되도록 지정했습니다.

실마리가 있습니까?

편집/명확한 설명 : 나는 페이지 자체의 코드를 변경할 수 없습니다 만 난 GTM

+0

질문에 대한 답변이 아니지만 GTM에 선택기 엔진이 내장되어 있으며 DOM 유형 변수를 사용하여 DOM 요소에 액세스 할 수 있습니다. 당신은 당신 자신의 js를 쓸 필요가 없다. –

+0

감사합니다. Eike, 이전에 시도하지 않았습니다. 불행히도 내 문제를 해결하지 못했습니다. – Mikken

+0

페이지에있는이 스팬 요소는 ... 폼 요소에 래핑됩니까? Kr 79는 어떻게 성취 되었습니까 ... 동적입니까 정적입니까? POST로 인해 동적 인 경우 도움이 될 수 있습니다. –

답변

1

그것은 비동기 문제처럼 보이는 통해 JS와 함께 노력하고 출력 소스를 읽어 보시기 바랍니다. 이 시도 :

//Using Jquery 
$(document).ready(function() { 
    document.getElementById('lblSummaryFreight').innerHTML; 
}); 

또는

//Add this at the end of the body, after all of your content 
<script> 
(function() { 
    document.getElementById('lblSummaryFreight').innerHTML; 
})(); 
</script> 
+0

Chrome에서 요소를 검사하기 전에 위의 JS 및 JQuery에서 모두 실패했습니다. JS 반환 "Kr 79"를 검사 한 후 JQuery는 페이지의 전체 소스를 반환하는 것으로 보입니다. JQuery가 errormessage를 발생시킵니다. "Uncaught DOMException : '문서'에 'querySelector'를 실행하지 못했습니다 : '[object HTMLDocument]'이 올바른 선택자가 아닙니다." 코드가 검사 한 후에 작동한다는 것은 이상하지만 이전에는 작동하지 않는다는 것을 알았습니다. 필자가 소스를 읽고 브라우저에서 결과를 볼 수있을 때 콘솔의 JavaScript를 통해 읽을 수 있어야합니다. – Mikken

+0

... 나를 생각하게 만들었습니다. 어떤 이유에서이 사이트를 만든 개발자가

안에 전체 사이트를 감쌌습니다. DOM을 읽는 방법을 엉망으로 만들 수 있습니까? – Mikken

+0

처음에 해당 변수에 액세스해야합니까? 그렇지 않다면 "setTimeout (function, milliseconds);"을 사용해보십시오. 예를 들어 시간을 5 초로 설정하고 페이지를 검사 할 필요가 있는지 확인하십시오. – Nestoraj

0

시도는 태그가 GTM에서 발사되는 방식을 변경할 수 있습니다. 창을로드 할 때 실행하고 다시 시도하십시오. 요소가 다른 js 파일에서 변경되고있을 수도 있습니다.

jQuery를 사용하는 것이 좋은 지적입니다. 비슷한 문제가 있었고 jQuery가 모두이를 해결했습니다.

+0

로드 된 창 후에 변경을 시도해 볼 것이지만, 콘솔에서 작동하지 않는다면 작동하지 않을 것이라고 생각합니다. GTM 중 하나? – Mikken

+0

네, 맞습니다. 그러나 다른 방아쇠를 추가하려고 할 수 있습니다. 엘리먼트를 검사 한 후에 정보에 액세스 할 수 있다고합시다. hover 이벤트 나 TimeOut을 사용하여 요소를 충전하거나 수정 한 것일 수 있습니다. 지연 또는 심지어 일부 이벤트 강제로 GTM에 새 트리거를 만들려고하십시오 (lblSummaryFreight 요소를 찾으려고 할 때 뭔가로드되어야하기 때문에). – EduardoPastor

+0

콘솔을 사용하여 요소를 클릭 한 후 스크립트를 실행 해 보았습니다. 작동하지 않습니다. DOM을 "깨우기"위해 관리 한 유일한 방법은 검사 또는 다시로드하는 것입니다. 지연은 작동하지 않는 것 같습니다. – Mikken

1

이 문제를 해결할 수없는 것 같고 일부 기발한 소스의 결함 인 것으로 보이므로 필자는 필요한 데이터를 얻는 또 다른 방법을 찾아 내려고 노력할 것입니다.

은 내가 무엇을 배웠는가 : 그것은 다른 브라우저에서 작동하기 때문에

  • 문제는, 크롬과 관련된 것으로 보인다. 이것은이 코드가 구현 된 GTM 태그가 사례의 ~ 50 %에서 올바른 값을 반환한다는 사실에 의해 지원됩니다.
  • Android 네이티브 브라우저에서 페이지를 테스트하면 '정의되지 않음'도 반환됩니다. 태그를 실행 한 페이지를 다시로드 한 후 올바른 값을 반환합니다.
  • 전체 DOM을 콘솔에서 사용할 수없는 것 같습니다. .이 시도 :

    document.getElementsByClassName ('완료') 길이가 0을 반환

하지만 소스의 클래스의 10 개 인스턴스 주위에있다. 페이지의 아무 곳이나 검사 한 후 올바른 번호를 반환합니다.

  • 스크립트 실행에 지연이 있으면 도움이되지 않으며 요소의 심볼 검사 또는 페이지를 다시로드하는 데 도움이됩니다.

그래서 내 결론은이 웹 페이지는 어떻게 든 내장되는 방식은 일부 브라우저의 성미에가는 것입니다 - 소스가로드 된 후 소스가 메모리가 부족가는 것처럼 보인다. 그러나 이것은 나의 이해 수준을 넘어서는 길입니다.

모든 입력에 감사드립니다.

관련 문제