2017-09-22 11 views
0
<script> 
document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>' 
</script> 

Google 크롬 콘솔에서이 코드를 사용해 보았습니다. 나는 성공했다. 하지만 "JavaScript (Footer)"또는 "JavaScript (Header)"(여기에 외부 JavaScript 파일이 있습니다.) 영역에 복사하여 붙여 넣으면 "Index : 208 Uncaught TypeError : 속성 'innerHTML을 읽을 수 없습니다. 'of null'(가능한 문제점 :! important [JavaScript 코드에서 어디에서?] 쿠키 배너 [시차]로드 시간)를 선언하십시오. 고맙습니다.Cookiebot (외부 JavaScript)의 쿠키 배너에 앵커 텍스트와 일반 텍스트를 삽입 (JavaScript를 통해 추가)하는 방법은 무엇입니까?

+0

지금까지 가지고있는 HTML/JS로 질문을 업데이트 할 수 있습니까? 어떤 식 으로든 DOM 요소를 업데이트하는 코드는 DOM이 준비되면 트리거되어야합니다. 또는 JS를 ''태그 바로 위에 복사해야합니다. –

+0

음 ** 'innerHTML'속성을 읽을 수 없습니다 **는 셀렉터에서 요소를 찾을 수 없거나 'innerHTML'을 가지고 있음을 의미합니다. "JavaScript (Footer)"또는 "JavaScript (Header)"로 복사/붙여 넣기한다는 것은 무엇을 의미합니까? 이 스크립트를 액세스 할 권한이없는 페이지에 "주입"하려고 시도하고 있습니까? 나는 당신이 소유하고 있다면/스크립트를 실행하려고하는 페이지에 대한 액세스 권한을 가지고 혼란 스러울거야 ... 또한 어쩌면 스크립트가 자리 선택기를 실행하기 전에로드 된 페이지를 보장하기 위해 준비 기능에 넣어보십시오 .... – NewToJS

답변

0

Javascript가 실행될 때 요소가 존재하지 않는 것 같습니다. 그 때문에 오류가 발생합니다.

오류는 'innerHTML of null을 읽을 수 없습니다.'즉 document.getElementById("CybotCookiebotDialogBodyContentText")null을 반환하고 있음을 알려줍니다.

#CybotCookiebotDialogBodyContentText이 존재할 때까지 기다렸다가 잡아서 업데이트해야합니다.

페이지가로드 될 때 바로 #CybotCookiebotDialogBodyContentText을 사용할 수있는 경우 JS를 <body> 요소 끝에 이동하십시오. 그렇지 않으면 다음과 같이 폴 기능을 설정해야합니다.

function waitFor(element, f) { 
    if (document.querySelector(element)) { 
     f(); 
    } else { 
     waitFor(element, f); 
    } 
} 

waitFor('#CybotCookiebotDialogBodyContentText', function() { 
    document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>' 
}) 
+0

또는 단순히'window.onload = function() {}'과 같은 이벤트 리스너를 사용하십시오. 음 ... ''태그에 스크립트를 보관하고 싶거나 html 콘텐츠 또는 '' – NewToJS

+0

의 맨 아래에 스크립트를 섞어 놓지 않고 해당 요소가로드 된 경우 반드시 작동하지 않는 것이 좋습니다. 비동기식으로 페이지가 이미로드 된 이후에 들어올 수 있기 때문입니다. – Bricky

+0

그래서'body'의 맨 아래에 스크립트를 두는 것이 좋습니다. DOM 준비 함수를 사용하면 페이지의 요소/바닥에 스크립트를 배치하는 것과 똑같이로드 된 것입니다. 페이지 ... 요소가 동적으로 작성되면 내 제안과 사용자 모두가 작동하지 않습니다. 만약 요소가 존재하는지 검사 할 간격을 설정하고 발견 될 때까지 반복한다면, 한 번 발견 된 간격을 지우고 나머지 소스 코드를 실행하십시오. 내가 틀렸다는 것을 말함으로써 당신은 당신의 제안의 어떤/모든 장점을 제거했습니다. – NewToJS