2012-02-28 2 views
5

YouTube HTML5 비디오 은 광고 배너로드와 같은 다양한 이벤트에 대한 console.log 메시지를 발생시킵니다. 내가 프로그래밍 다음과 같은 기능을 트리거하기 위해 자바 스크립트를 사용하여 CONSOLE.LOG 메시지를 캡처하기 위해 노력하고있어 :console.log 캡처 시도 중 <iframe>

console['log'] = function(msg){ 
    // Operate on msg 
} 

는 유튜브 <iframe>에 CONSOLE.LOG 메시지를 보내려면 다음과 같은 방법을 예시 참조 용 긴 형식으로 (작동) :

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console.log(msg); 

그러나, 다음 코드 작동하지 않습니다

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console['log'] = function(msg){ 
    // Operate on msg from YouTube <iframe> 
} 

I을 또한 시도했다 :

window.console = document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console; 
console['log'] = function(msg){ 
    // Operate on msg 
} 

내가 이해할 수없는 것은; YouTube 에 console.log 메시지를 호출 할 수 있다면 콘솔 로그 메시지를 캡처하는 방법은 무엇입니까? 그런 방법이 있다면, 이것을하는 적절한 방법은 무엇입니까?

+0

브라우저 보안이 다른 도메인의 콘솔에 액세스 할 수 없다고 생각됩니다. – jessehouwing

+0

@jessehouwing 내가 말하는 것을보고 있지만 다른 도메인의 iframe에 콘솔 로그 메시지를 차단하는 것이 더 바람직하지 않습니까? – lincolnberryiii

+1

그들을 읽는 것이 더 중요합니다. 자바 스크립트가 신용 카드 번호를 로그에 기록한다고 가정하면 다른 도메인에서이를 읽지 않아도됩니다. 당신이 그것에 쓰면, 당신은 어떤 해를 끼칠 수 있습니다. :) – jessehouwing

답변

3

최신 버전 브라우저에서는 iframe이있는 페이지 (예 : Chrome v31, Firefox v26, IE11)의 ​​다른 도메인에서 iFrame 내부 요소에 액세스 할 수 없습니다.

일부 특정 브라우저의 이전 버전에서 작동했지만 브라우저 간 호환이되지 않습니다. W3C HTML5 embedded content (including iframes) specification을 준수


현재 브라우저뿐만 아니라 동일 출처 정책을 적용뿐만 아니라 iframe이에 더 많은 제한을 지정하기 위해 새로운 sandbox 속성을 받아들입니다.

이 페이지에 새로운 표준을 지원하는 브라우저 볼 수 있습니다 : 당신은에 액세스 할 수 없습니다 따라서 새로운 속성은 또한 W3C 동일 출처 정책을 준수해야합니다 동의 한 http://html5test.com/compare/feature/security-sandbox.html

브라우저를 console 개체 (또는 iframe 내부의 다른 개체).