2009-07-29 64 views
8

Làm cách nào để có thể nhận sự kiện keydown trên khung nội tuyến?sự kiện phím tắt trên iframe

+0

Câu trả lời này phù hợp với tôi: http://stackoverflow.com/questions/26324213/listen-for-mouse-click-and-keypress-events-within-iframe/39617876#39617876 –

Trả lời

5

Adding event handler to an iframe using JQuery

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() { 
    // my func 
}); 
+6

'$ (" # iframe_id ") .get (0) .contentWindow.document' tương đương với' $ (document.getElementById ('iframe_id'). contentWindow.document) ' – BrunoLM

12

Bạn cần truy cập vào tài liệu của iframe đó là thông qua các đối tượng ContentWindow

$(document.getElementById('IFrameId').contentWindow.document).keydown(function(){ alert('Key down!'); }); 

Hãy chắc chắn rằng bạn kết sự kiện sau khung đã nạp.

+5

Ngoài ra, hãy chắc chắn rằng bạn ràng buộc sự kiện SAU khung đã tải, nếu không nó sẽ không cháy. – claviska

+0

@Aksival Tất nhiên, đã được bộ não của tôi tự hỏi tại sao điều này không làm việc cho lứa tuổi bây giờ. – Ally

+1

@RedHouse Tôi đã cập nhật câu trả lời để làm rõ điểm đó (Tôi nghĩ rằng nhận xét của Aksival sẽ rõ ràng cho mọi người xem) – James

0

Rất muộn để trả lời nhưng có thể hữu ích cho ai đó.
Tôi đã gặp sự cố tương tự, điều đó có nghĩa là tôi đã ở trang iframe inside a HTML trong một số same domain.
Bây giờ tôi cần lấy số Esc keyup event.
tuy nhiên tôi không muốn (hoặc một số lần tôi không thể) viết bất kỳ tập lệnh nào bên trong phần khung nội tuyến.
để làm điều đó, tôi sử dụng tập lệnh bên dưới để phát hiện id mẹ của phần tử được chọn bằng cách nhấp vào nó là gì.

$(window).load(function() { 
      jQuery(jQuery('[id="frame"]')[0].contentWindow.document).on('keyup', function (e) { 

       var _currntItem = ($(e.target)) 

       if (e.keyCode === 27) { 
        alert(_currntItem.parent().attr('id')); 
       } 
      }); 

Mã này giải quyết được sự cố của tôi.
hy vọng hữu ích.

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