콘텐츠 스크립트에 이상한 문제가 발생했습니다. 콘텐츠 스크립트는 매니페스트에 "run_at" : "document_end"
으로 정의됩니다. 페이지가로드 된 후 스크립트는 객체 태그를 페이지에 삽입하고 (미리 정의 된 ID를 가진 태그가 아직없는 경우) type
, width
, height
, innerHTML
및 title
과 같은 일부 속성을 설정합니다. 모든 것은 여기에서 잘 작동합니다. 크롬 콘텐츠 스크립트에서 DOM 개체 속성에 액세스
function checkForObject()
{
var obj = document.getElementById("unique_id");
if(obj == null)
{
var d = document.createElement("object");
d.id = "unique_id";
d.width = "1";
d.height = "1";
d.type = "application/x-y-z";
d.title = "1000";
d.style.position = "absolute";
d.style.left = "0px";
d.style.top = "0px";
d.style.zIndex = "1";
document.getElementsByTagName("body")[0].appendChild(d);
}
}
checkForObject();
나는 속성에 적절한 값으로 페이지의 HTML 코드에서 새 개체를 참조하십시오.
얼마 후 나는 동일한 콘텐츠 스크립트에서 개체의 title
속성을 읽어야합니다. 코드는 간단하다 :
function ReadTitle()
{
var obj = document.getElementById("unique_id");
var value = obj.title; // breakpoint
console.log(value);
// TODO: want to use proper title value here
}
기능이 background.html 페이지에서 호출됩니다
chrome.tabs.onActivated.addListener(
function(info)
{
chrome.tabs.executeScript(info.tabId, {code: 'setTimeout(ReadTitle, 250);'});
});
불행하게도, ReadTitle
에서 내가 기대하지 무엇을 얻고있다.
function title() { [native code] }
내가, 내가 title
을 포함한 모든 객체 속성이 올바른지 감시자에서 볼 // breakpoint
코멘트에 의해 표시 줄에 중단 점을 설정 한 경우 : 대신 title
의 현재 가치 나는 기록 된 값은 참조하십시오. 그럼에도 불구하고 변수 value
은 위에서 설명한 설명 문자열을 얻습니다.
분명히, 나는 간단한 것을 놓쳤다. 그러나 나는 그것을 이해할 수 없다.
대답은입니다. 그것은 사용 된 유형의 객체를 호스팅하는 npapi 플러그인의 버그였습니다. 질문을 읽어 도와 주신 모든 분들께 사과드립니다.
문제를 복제하기에는 정보가 충분하지 않습니다. 내 스크립트는 하루 종일'title'을 포함하여 속성을 설정하고 가져옵니다. (1) ** 제목 **을 설정하는 코드는 무엇입니까? (2) 대상 페이지가 무엇입니까 (정확한 URL이 가장 좋습니까)? (3) 사용중인 Chrome 버전은 무엇입니까? (4) 어떤 OS인가? (5) 전체 스크립트에 링크하거나 게시하십시오. –
@BrockAdams, 대상 페이지가 다릅니다. 이 스크립트는 모든 페이지에서 작동합니다 ("* : // */*"와 일치 함). 나는 지금 더 많은 코드를 추가하고있다. – Stan