2011-01-25 3 views
0

각 웹 페이지에 대한 최신 데이터를 수집하기 위해 팝업 창을보기 전에 내 Chrome 확장 프로그램이 열려있는 모든 탭에 대한 내용 스크립트를 다시 실행하기를 원합니다 (배경 페이지로 메시지를 보냅니다). 내 문제는 각 iframe에 대한 전체 액세스 권한을 얻으려면 allframes를 true로 설정해야한다는 것입니다. 즉, 팝업 창을 표시하기 전에 각 프레임에서 메시지를 수신 할 때까지 기다려야합니다.모든 프레임이 Chrome 확장 프로그램의 contentscript에서 응답을 반환했음을 감지합니까?

내 문제는 얼마나 많은 프레임이 있는지 결정하는 방법을 잘 모르겠다는 것입니다. 필자가 살펴본 한 가지 접근법은 contentscript에서 프레임 수를 감지하는 것이지만, 지금 바로 요청할 수 없다는 것을 나타내는 열린 버그가 있습니다. 또 다른 방법은 그냥 페이지로 이동했을 때 얻은 것과 동일한 응답을 기다리는 것입니다.하지만 AJAX 호출로 인해 프레임 수가 증가 할 가능성이 있습니다. 마지막으로 chrome.extension.SendRequest에 대한 응답에 이러한 정보가 포함되기를 기대했지만 그렇지 않습니다.

귀하의 도움에 감사드립니다.

답변

0

항상 새 프레임이로드 될 때마다 콘텐츠 스크립트가 실행되도록 매니페스트에서 콘텐츠 스크립트를 실행하는 것이 좋습니다. 그런 다음 컨텐츠 스크립트가 확장에 대한 포트를 열어 모든 열린 프레임이 백그라운드에 대한 포트를 갖게하십시오. 그런 다음 각 탭의 모든 열린 포트를 추적하고 원하는 포트로 메시지를 보내려면 배경 페이지까지입니다.

+0

제안 해 주셔서 감사합니다. 목차와 배경 페이지 간의 통신을 개선하기 위해 포트를 사용하는 방법을 살펴 보겠습니다. 그러나, 나는 여전히 contentscript가 항상 새로운 프레임을 위해 실행되지는 않는다는 문제가 있습니다. (http://www.reddit.com/r/videos에서 괜찮습니다. 그러나 Facebook 비디오에서는 작동하지 않습니다.) –

+0

실제로 문제는 페이스 북에 포함 된 모든 비디오 (페이스 북 비디오에만 국한된 것은 아닙니다)와 같습니다. 기회가 생겼을 때 소스를보고 iframe이 각 사이트에 삽입 된 방식을 비교합니다 (예상되는 동작은 contentscript가 생성 될 때 새로운 iframe에서 실행되어야한다는 경우 버그가 될 수 있음) –

+0

콘텐츠 스크립트 단순히 console.log ('injected!')를 수행하고 개발자 콘솔을 사용하여 iframe을 추가하고 탐색 할 때마다 콘텐츠 스크립트가 실행됩니다. 나는 당신이 그것을 이해하기를 바랍니다. – yonran

관련 문제