0

크롬 확장을 만들려고하지만 올바른 방식으로 버튼에 리스너를 부착 할 수 없습니다. js에 익숙하지 않은 점에 유의해야합니다. 문제는 개념을 잘못 이해했거나 요소 로딩 타이밍에 있습니다. 여기 크롬 확장에 청취자를 추가 할 수 없습니다.

콜백

에 청취자를 추가하려고 i'am 있도록, 그래서 인라인 JS를 매니페스트 (V2)를 사용하여

"background" : {"page" : "kbm.html"} 

I'am는 disalowed됩니다 kbm.html입니다 : 여기

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="kbm.js"></script> 
    </head> 
    <body> 
     <button id="loadall">Open all saved</button> 
    </body> 
</html> 

및 kbm.js :

chrome.browserAction.onClicked.addListener(
     function(tab) { 
      chrome.tabs.create({'url': chrome.extension.getURL('kbm.html')}, 
       function(tab) { 
        alert(document.getElementById("loadall")); 
         document.getElementById("loadall").addEventListener("click",loadAll,false); 
       }); 
     } 
); 

function loadAll(){ 
    alert("hallo"); 
} 

도구 모음 아이콘을 kbm.html을로드하고 클릭 한 후 나는 chrome.tabs.create 전화에서 경고 메시지를 볼 수 있습니다 뒤로. 그러나 loadall 버튼을 클릭하면 아무것도 표시되지 않습니다.

페이지로드 후 버튼에 리스너가 없다는 것을 디버거 (f12 포함)에서 볼 수 있습니다. 나는 동적으로 JS 콘솔

>document.getElementById("loadall").addEventListener("click",loadAll); 
undefined 

에서 버튼에 리스너를 추가 할 수 있기 때문에 구문은

가 확인 될 것으로 보인다 그리고 내가 클릭 한 후() LOADALL에서 전화를 경고 참조 요소 설명에 나타납니다.

먼저 나는 콜백 MB 모든 페이지 요소 초기화 이전이라는 것을 thougth 따라서는 ID = "LOADALL"와 요소를 찾을 수없는 것이 아니라, 그 메시지

object HTMLButtonElement 

먼저 경고 주문에 따라 이유.

그러나이

I'v이 예제를 보면서 페이지로드 :(에서 버튼에 부착 된 콜백 없다하지만 맹목적으로 내가 놓친 것을 발견 할 THER 실현을 복사하지 못할 이유를 나는 아직도 이해가 안 돼요. . 사전에

감사

답변

0

어 ... 난 그냥 포기하고 같은 다른 장소로 버튼 리스너 로직을 추가 이동 :

document.addEventListener('DOMContentLoaded', function() { 
    document.getElementById('loadall').addEventListener('click', loadAll) 
} 
관련 문제