Firefox 34 및 addon SDK 1.17을 사용하십시오.Firefox 부가 기능 콘텐츠 스크립트에서 DOM 요소에 액세스 할 수 없습니다.
SDK의 page-mod를 사용하여 콘텐츠 스크립트를 첨부하고 있습니다. 콘텐츠 스크립트 내에서 DOM 요소에 액세스하려고 할 때 매우 이상한 동작이 나타납니다.
main.js
pageMod.PageMod({
include: "somewebsite",
contentScriptWhen: 'end',
contentScriptFile: [data.url("stuff.js")]
});
stuff.js
log(document.getElementsByTagName("body")); // empty object
log(document.getElementById("SomeIdThatShouldBeThere")); // empty object
log(document.getElementsByTagName("li")); // x amount of empty objects...
이 그러나 예상대로 작동합니다 : 나는
을 할 수 얻을 빈 객체 또한document.body.style.border = "5px solid red";
을
obj.style.border = ...
html 요소가 테두리 색 등을 변경하는 것으로 보입니다. 그러나 요소의 속성을 읽을 수 없어서 시각 장애인입니다.
나는 사람들이 콘텐츠 스크립트에서 DOM을 수정하는 데 몇 가지 제한이 있다고 말했지만 분명히 가장 기본적인 것을 할 수는 없다고 읽었습니다. 이게 지원 될 예정인가요?
편집 : 최종적으로 요소가 정확한 위치에 있고 속성을 읽을 수 있지만 요소를 로깅하는 것은 여전히 빈 개체 만 인쇄합니다 ... 요소의 원하는 모든 속성을 인쇄해야 함을 의미합니다. 갈라져. 적어도 작동하지만 더 좋을 수 있습니다.
'document' 대신'unsafeWindow.document'를 사용해 보셨나요? –
차이가 나는 것 같지 않습니다. – hannu40k
당신은 코드에 오타가 있습니다. 'getElementById'가 아니라'getElementsById' ('s'에 주목하십시오) 여야합니다. 하지만 왜 'getElementsByTagName'가 빈 객체를 반환하는지 알 수 없습니다. 이 빈 객체가 콘솔에 표시됩니까? –