2013-03-21 6 views
7

브라우저 확장 프로그램에서 작업하고 있습니다 (생각해 보면 SEOQuake) - 표시되는 검색 결과에 대한 데이터를 표시해야합니다.Google 순간 검색 페이지가 완전히로드 된 것을 감지하는 방법은 무엇인가요?

문제 : Google 순간 검색 결과 페이지가로드되는 중에 추가 된 항목이 있으면 추가 한 항목을 덮어 씁니다. 나는 정말로 워키키 한 setInterval 비즈니스를 작성했는데 (ol#rso의 내용이 멈추는 것을 멈출 때까지 대기하는 등), 그래서 페이지가 로딩되었는지 여부를 확실하게 결정하는 방법이 확실치 않다는 것을 의미한다고 생각한다.

그냥 1-2 초 정도 기다릴 수 있지만 최대 시간을 절약하기 위해 결과가로드되는 즉시 데이터를 가져오고 싶습니다.

편집 : IE8이 지원하지 않기 때문에 DOMElementWhatever를 사용할 수 없다는 점에 유의하십시오.

+0

좋은 크로스 브라우저 솔루션이 아직 있는지 잘 모르겠습니다. 새로운 [Mutation Observers] (http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers)와 [Mutation Summary] (https://code.google. .com/p/mutation-summary /) 라이브러리는 도움이되지만 IE는 좋아하지 않습니다. [CSS3 애니메이션 이벤트] (http://www.backalleycoder.com/2012/08/06/css-selector-listeners/)를 사용하는 또 다른 흥미로운 접근법이지만 IE는 좋아하지 않습니다 :-p IE에 대한'setInterval' 해킹은 어떨까요? 그리고 다른 모든 것들에 대한 돌연변이 요약? – thirdender

+0

IE에서 [onpropertychange] (http://msdn.microsoft.com/en-us/library/ie/ms536956(v=vs.85) .aspx) 이벤트를 사용할 수 있습니다. – thirdender

답변

3

이 시도 :

IE에서 작동합니다 8+ 및 기타 모든 브라우저
window.addEventListener("message", function(e) {if(e.data == 'jrc') console.log('loaded')}, false); 

: 그 IE 8에서 작동하지 않는 경우 http://caniuse.com/#feat=x-doc-messaging

이 (내 맥 오른쪽에서 테스트 할 수 없습니다 지금), 나에게 알려주세요. 나는 지난 1 시간 동안 rs.js에 대해 합리적으로 잘 이해하고 있다고 생각한다. ;)

+0

답변이 있어야했기 때문에 리뷰 작성자가 거부 한 편집은 'e.data.type =='sr '이라고 표시되어야한다고 제안했습니다. – mrks