2012-02-28 16 views
5

Wideo YouTube HTML5 uruchamia komunikat konsola.log dla różnych zdarzeń, takich jak ładowanie banera reklamowego. Próbuję programowo uchwycić console.log wiadomość przy użyciu JavaScript, aby wywołać funkcję w następujący sposób:Próba przechwytywania konsolety.log Wiadomość z YouTube <iframe>

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

Aby wysłać wiadomość do console.log YouTube , działa następujący sposób (w longhand odsyłające ilustracyjnych):

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

jednak poniższy kod nie działa:

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

I też wypróbowałem:

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

Czego nie rozumiem; jeśli jestem w stanie wywołać wiadomość console.log na YouTube , to w jaki sposób mogę przechwycićkomunikat dziennika konsoli? Jaki jest właściwy sposób, aby to zrobić, jeśli istnieje taki sposób?

+0

Podejrzewam, że zabezpieczenia przeglądarki nie pozwalają na dostęp do konsoli z innej domeny. – jessehouwing

+0

@jessehouwing Widzę, co mówisz, ale czy nie byłoby bardziej sensowne blokowanie komunikatów dziennika konsoli w elemencie iframe z innej domeny? – lincolnberryiii

+1

Czytanie ich jest bardziej istotne. Powiedzmy, że javascript rejestruje w dzienniku numer karty kredytowej, nie chcesz, aby inna domena je odczytała. Jeśli napiszesz do tego, co możesz zrobić krzywdy :). – jessehouwing

Odpowiedz

3

W przeglądarkach najnowszej wersji nie można uzyskać dostępu do żadnego elementu wewnątrz elementu iframe z innej domeny niż strona zawierająca element iframe, tj. Chrome v31, Firefox v26, IE11.

To działało w starszych wersjach niektórych przeglądarek, ale z pewnością nie będzie działać w różnych przeglądarkach.


Aktualne przeglądarek, które spełniają W3C HTML5 embedded content (including iframes) specification nie tylko egzekwowania polityki tego samego pochodzenia, ale również przyjmuje nowy atrybut sandbox określić jeszcze więcej ograniczeń iframe.

Widać przeglądarkach obsługujących nowy standard w tej strony: http://html5test.com/compare/feature/security-sandbox.html

przeglądarek, które akceptują nowy atrybut musi również być zgodne z W3C polityki tego samego pochodzenia, a tym samym nie pozwoli Ci uzyskać dostęp do console obiekt (lub dowolny inny obiekt wewnątrz elementu iframe).

Powiązane problemy