2012-02-28 23 views
5

Video HTML5 trên YouTube kích hoạt thông báo console.log cho các sự kiện khác nhau như tải biểu ngữ quảng cáo. Tôi đang cố gắng để lập trình nắm bắt được thông điệp console.log sử dụng JavaScript để kích hoạt một chức năng như sau:Đang cố gắng nắm bắt thông điệp console.log từ YouTube <iframe>

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

Để gửi tin nhắn console.log đến YouTube , các phương pháp sau đây làm việc (trong longhand để tham khảo minh họa):

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

Tuy nhiên, đoạn mã sau không hoạt động:

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

tôi cũng đã thử:

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

Điều tôi không hiểu là; nếu tôi có thể gọi thông báo console.log tới YouTube thì làm cách nào để chụp thông báo nhật ký bảng điều khiển? Cách thích hợp để làm điều này là gì, nếu có cách như vậy?

+0

Tôi nghi ngờ rằng bảo mật trình duyệt không cho phép bạn truy cập vào bảng điều khiển từ một tên miền khác. – jessehouwing

+0

@jessehouwing Tôi thấy những gì bạn đang nói, nhưng nó sẽ không có ý nghĩa hơn để ngăn chặn tin nhắn đăng nhập console vào khung nội tuyến từ một tên miền khác? – lincolnberryiii

+1

Đọc chúng là cần thiết hơn. Giả sử javascript ghi lại số thẻ tín dụng vào nhật ký, bạn sẽ không muốn một miền khác đọc chúng. Nếu bạn viết thư cho nó, bạn có thể làm hại gì :). – jessehouwing

Trả lời

3

Trên trình duyệt phiên bản mới nhất, bạn không thể truy cập bất kỳ phần tử nào bên trong iFrame từ một tên miền khác mà trang giữ khung nội tuyến, ví dụ: Chrome v31, Firefox v26, IE11.

Nó hoạt động trên một số phiên bản cũ của trình duyệt cụ thể, nhưng điều này chắc chắn sẽ không hoạt động trên trình duyệt.


các trình duyệt hiện theo đúng quy định W3C HTML5 embedded content (including iframes) specification không chỉ thực thi chính sách cùng nguồn gốc nhưng cũng chấp nhận một sandbox thuộc tính mới để xác định thậm chí nhiều hạn chế đối với một iframe.

Bạn có thể xem trình duyệt có hỗ trợ các tiêu chuẩn mới trong trang này: http://html5test.com/compare/feature/security-sandbox.html

Các trình duyệt chấp nhận các thuộc tính mới cũng phải tuân thủ các chính sách cùng nguồn gốc W3C, và do đó sẽ không cho phép bạn truy cập vào console đối tượng (hoặc bất kỳ đối tượng nào khác trong khung nội tuyến).

Các vấn đề liên quan