2

Chrome 확장 프로그램의 콘텐츠 스크립트를 사용하여 페이지에서 특정 클래스 이름을 가진 요소에 액세스하려고합니다. 지금까지 콘텐츠 스크립트는 document.getElementById()를 사용하여 특정 ID가있는 요소를 성공적으로 찾을 수 있지만 document.getElementsByClassName() 또는 jQuery의 $ (". className")을 사용하면 결과가 산출되지 않습니다. 테스트를 위해 클래스 이름으로 '헤더'를 사용했으며 확장을 실행 한 모든 웹 사이트에서 배열 길이가 0이되었습니다. 누락 된 아이디어가 있습니까? 여기에 내가 함께 테스트 한 내용은 다음과 같습니다크롬 확장 - 콘텐츠 스크립트가 클래스 이름별로 요소를 찾을 수 없습니다.

manifest.json 
================= 
{ 
    "name": "Sample Extension", 
    "version": "0.0.1", 
    "description": "Sample extension", 
    "icons": {"128": "icon.png"}, 
    "permissions": [ 
     "tabs", "<all_urls>" 
    ], 
    "browser_action": { 
     "default_icon": "browseraction.png", 
     "default_title": "Sample", 
     "popup": "popup.html" 
    }, 
    "content_scripts": [ 
     { 
      "matches": [ "<all_urls>" ], 
      "js": ["scripts/contentscript.js"], 
      "run_at": "document_end" 
     } 
    ] 
} 

contentscript.js 
=================== 
var elems = document.getElementsByClassName("header"); 
alert(elems.length); 
+0

어쩌면 어리석은 질문 일지 모르지만 HTML에 스타일 클래스 "헤더"가있는 요소가 있는지 확인하십시오. –

+0

글쎄, 솔직히 말해서, 실제로 클래스 이름으로 '헤더'를 사용하지 않고 있는데,이 예제를 위해 더 일반적 일 것이라고 생각했습니다. 내가 사용했던 테스트 웹 사이트는 http://supercollider.dk/2010/04/chrome-extensions-for-web-hackers-part-%E2%85%A1-background-pages-255이고 ' 내 수업 이름으로. – sojo2600

답변

2

귀하의 코드는 매우 기본적이고 간단합니다, 그것은 이 문제의 원인이 될 수 없습니다. 사실, 방금 정확한 코드를 사용했는데 alert()은 매번 그리고 때마다 1 (올바른 내용)이라고 말합니다.

가장 좋은 추측은 contentscript.js에서 변경 한 후 내선 번호를 다시로드하지 않았거나 다른 일부 확장자가 간섭되어이 이상한 동작이 발생했기 때문입니다. 확장 프로그램을 테스트하기 전에 다른 확장 프로그램을 사용 중지 해보세요.

+0

테스트 해 주셔서 감사합니다. @Konrad Dzwinel! 흥미롭게도 이제 페이지를 새로 고침 할 때 스크립트에서 정확한 숫자 '1'을 알려주지 만 브라우저 액션을 사용하면 결과는 0이됩니다. 클래스를 수집 할 수 있는지 확인하기 위해 안심입니다. _some point_에있는 요소들, 이것은 새로운 판도라의 상자가 _ 접근 할 수있는 _ 무엇이든 열리는 것 같아요. – sojo2600

+1

우노 모멘트. 콘텐츠 스크립트가하는 것과 똑같은 일을하기 위해 브라우저 액션을 사용한다고 말한 적은 없습니다. 여기에 두 가지를 혼합하고 있습니다. –

+0

사실, 무슨 일이 일어나는지 알 수있을 것 같습니다. 나는 컨텐츠 스크립트가 manifest에 의해 지시 된 "document_end"에서 실행되고 있다고 생각한다. 그런 다음 브라우저 액션에 의해 트리거 된 내 popup.html은 본문 끝 부분에 을 실행하지만 브라우저가 현재보고있는 페이지가 아닌 팝업 DOM의 컨텍스트 Konrad, 다시 한번 감사드립니다. – sojo2600