2012-08-15 2 views
0

위쪽 검은 색 막대의 '더보기'다음에 텍스트를 추가하는 Chrome 확장 프로그램 (콘텐츠 스크립트)을 만들고 있습니다. Gmail. 이러한 요소는 canvas_frame iframe에 캡슐화되어 있습니다. Chrome 확장 프로그램에서 Gmail의 iframe에 액세스 할 때 정의되지 않은 오류가 발생하지만 개발자 콘솔에서는 표시되지 않습니다.

내가 함께 이러한 요소에 액세스하려고

는 :

document.getElementById('canvas_frame').contentWindow.document.getElementById('gbz').innerHTML = scr;

나는 Uncaught TypeError: Cannot read property 'document' of undefined를 얻을. 하지만 코드를 Chrome 개발자 콘솔에 직접 입력하면 작동합니다. 왜 이런거야? 크롬 확장에서 해당 요소에 액세스하고 수정하려면 어떻게해야합니까?

저는 새로운 자바 스크립트이므로 뭔가 분명히 빠져 있습니다. 감사.

답변

0

내가 크롬 확장 프로그램을 구축

document.getElementById('canvas_frame').contentDocument.document.getElementById('gbz').innerHTML = src; 
+0

그 결과는 다음과 같습니다. (http://i.minus.com/iGroGNhM1GA9v.png) – user1267383

+0

id가 canvas_frame 인 iframe이 페이지에 있는지 확인하십시오. – mattnull

+0

그럴 수 있습니다. www.mail.google.com에서이 광고를 게재하고 있습니다. 사실,이 코드는 Chrome Dev 콘솔에 입력하면 작동하지만 내 확장 프로그램에서 실행중인 경우 작동하지 않습니다. – user1267383

0

자신을 시도하고이 발행 발생했습니다, 그것을 완화하는 몇 가지 방법이 있습니다, 하나는 #canvas_frame 찾고 JS에서 타이머 루프를 실행하고 중지하는 것입니다 찾으면 다른 하나는 DOM 노드 삽입 이벤트를 수신하고 찾고있는 요소가 삽입 된 경우 원하는 작업을 시작합니다.

Canvas_frame은 내가해야 할 일이있는 경우 Gmail이 상호 작용하는 "콘텐츠 영역"요소 였지만 현재 (며칠 전) 현재 Google Apps Gmail의 인스턴스가 content_frame 또는 오히려 페이지가로드 될 때 순간적으로 페이지가 이동 한 다음 제거되는 경우, Google이 싫어하는 것이 무엇인지 모르겠지만 Gmail 크롬 확장을위한 공식 API를 제공하지 않으므로 (매우 불행하게도), 우리는 확장 개발자로서 자비를 베풀고 있습니다 ...

관련 문제