2012-12-08 4 views
1

을 복제하십시오.iframe jQuery의 모든 이벤트를 캐치하고

나는 웹 페이지를 표시하는 iframe이 있습니다 (필자가 개발하지 않은). 이 페이지에 이벤트가 첨부되어있을 수 있습니다 (아마도 모르겠습니다).

어떻게 이러한 이벤트를 동적으로 가로 채고 나중에 복제 할 수 있도록 저장할 수 있습니까?

예 : 마우스가 특정 div 위로 이동하면 색상이 바뀌는 것으로 가정합니다. div에 색이 바뀔 이벤트를 트리거하면 나중에 (사용자 상호 작용없이) 나를 복제 할 수있는 모든 일련의 정보가 "등록"되어 있는지 확인하고 싶습니다.

아이디어가 있으십니까? 녹음 및 후속 복제의 경우

+0

iframe 페이지가 동일한 도메인에 있지 않은 경우 보안상의 이유로 브라우저에서이를 방지해야합니다. – Bergi

+0

자동화 된 테스트 프레임 워크를 찾고있는 것처럼 보입니까? – Bergi

+0

실제로, 아이디어는 사이트의 UI를 동기화하는 것입니다. – jenjis

답변

0

div에 이벤트 처리기를 추가하십시오. 귀하의 예를 들어 당신이 '복제'를 들어

('#div').on('mouseover', function(e) { ... }) 

$('#div').mouseover(function(e) { ... }) 

또는

을 사용할 수 있습니다, 당신은 어떤 객체에서 과거의 사건에 대한 정보를 저장해야 할 것이다. 이벤트 객체 자체를 저장할 수도 있습니다.

+0

이 솔루션은 페이지의 요소를 알고 이벤트가 첨부되어 있다고 가정합니다. 일반적인 솔루션 인 "allEventListener"를 찾습니다. – jenjis

2

짧은 대답은 입니다.이 될 수 없습니다.

Same Origin Policy 때문에 "다른 웹 페이지"라고 말하면 다른 도메인에 있으면 페이지의 JavaScript로 "모든 웹 페이지"의 문서 객체에 액세스 할 수 없습니다. IFRAME에있는 웹 사이트에서 스크립트를 협조하여 "모든 웹 페이지"에서 발생하지 않도록해야합니다.
웹 페이지는 다음 당신은 당신이 here을 설명처럼 잡으려면 모든 이벤트에 대한 리스너를 추가하여의 IFRAME 본문 요소의 이벤트에 액세스 할 수 있습니다 동일한 도메인에있는 경우 동일한 도메인에

IFRAME. 이것은 모든 이벤트에 가능합니다 bubble up 본문에. 따라서 신체에 위쪽으로 버블 링되는 것을 방지하는 이벤트가있는 경우이 솔루션으로 막히지 않습니다.

jQuery('#website body').on('click mouseover mouseout', function(event) { 
    console.log(event.type); 
}); 

당신은 당신이 그 (것)들을 위와 같이 공백으로 구분 된 목록에서 원하는 이벤트를 잡을 수있는 ID website과 IFRAME을 한 가정. 이 예는 click, mousovermouseout을 포착합니다.

어쩌면 이것이 원하는 것에 더 가깝습니까?

+0

좋아, 이제는 같은 도메인에서이 작업을 수행한다고 가정 해 봅시다. 프록시를 통해 동일 출처 정책을 극복했지만이 주제에는 관심이 없습니다. 내가 관심을 갖는 부분은 어떻게 할 수 있는가입니다. 어떻게하면 페이지에서 해고 된 이벤트를 가로 채고 나중에 기록하고 다시 재생할 수 있습니까? 빠른 응답을 보내 주셔서 감사합니다. – jenjis

+0

예, 감사합니다. 다른 게시물에서 그런 해결책을 읽었지 만, 페이지의 모든 요소에 추가 한 각 이벤트에 대한 수신기를 추가하게 되겠습니까? 좀 더 구체적으로는 이미 페이지의 이벤트를 인식하고 가로 채기 위해 뭔가를 찾고있었습니다. 찾아보기 $ ("# element")와 (과 같은) 데이터를 발견했습니다. data ("events"); 하지만 온라인 설명서 나 사용 방법의 구체적인 예를 찾을 수 없습니다. ( – jenjis

+0

[jQuery.data] (http://api.jquery.com/data/)를 사용하면 데이터를 DOM 요소에 저장할 수 있습니다. 그것은 귀하의 경우에 유용 할 것입니다 의심. – migg

관련 문제