2011-01-05 29 views
17

Tại sao sau đây không làm việc:Kích hoạt sự kiện trong cửa sổ cha mẹ iframe của

//iframe: 
window.parent.$(document).trigger('complete'); 

//parent window: 
$(document).bind('complete', function(){ 
    alert('Complete'); 
}); 

trong khi sau IS làm việc:

//iframe: 
window.parent.$('body').trigger('complete'); 

//parent window: 
$('body').bind('complete', function(){ 
    alert('Complete'); 
}); 

?

+0

Bản sao có thể có của [sự kiện nhấp chuột kích hoạt trong cửa sổ chính của khung nội tuyến] (http://stackoverflow.com/questions/3521947/trigger-click-event-in-iframe-parent-window) –

Trả lời

36

Cách theo dõi sự kiện, bạn chỉ có thể kích hoạt hoặc nhận sự kiện trên cùng một tài liệu.

thử

window.parent.$(window.parent.document).trigger('complete'); 
+0

Tôi về cơ bản có cùng một vấn đề với YUI3, lời khuyên nào? – danjah

+0

@Danjah Tôi chưa bao giờ thực sự sử dụng YUI trước đây, vì vậy tôi không chắc chắn tôi có thể giúp đỡ. Tuy nhiên, hoàn toàn có thể là một cách tiếp cận tương tự có thể được sử dụng: window.parent.YUI.use ('node-event-simulate', function (Y) {Y.one (window.parent.document) .simulate ('click ');}); Tuy nhiên, bạn có thể chỉ muốn hiển thị phương thức trên cấp độ gốc để kích hoạt yêu cầu thay mặt iframe của bạn, đề xuất của ala @Ken Redler bên dưới. – HackedByChinese

+0

Alrighty, cảm ơn rất nhiều - Tôi chắc chắn sẽ cho rằng một bash, tôi đã được một chút cảnh giác để bắt đầu mô phỏng các sự kiện trước khi cố gắng để kích hoạt xử lý hiện có ... nhưng tôi có thể phải. – danjah

10

Bạn có thể thử thêm một chức năng kích hoạt trong tài liệu gốc, sau đó gọi nó như là một chức năng thường xuyên từ iframe. Điều này sẽ đảm bảo bạn đang kích hoạt sự kiện trong ngữ cảnh tài liệu phù hợp.

// In Parent 
function triggerComplete() { 
    $(document).trigger('complete'); 
} 

// In iFrame 
window.parent.triggerComplete(); 
-5

kiểm tra giải pháp này, nó rất khó khăn

top.frames [ 'FRAME_NAME'] document.getElementById ('xử lý') style.display = 'none'..;

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