Làm cách nào tôi có thể nắm bắt một nhấp chuột hoặc sự kiện được tổ chức trên div xung quanh khung nội tuyến. Tôi đã thử gắn funciton để nhấp vào sự kiện trên div nhưng kể từ khi iframe không bao giờ bong bóng sự kiện lên đến div xung quanh chức năng không bao giờ được gọi. Có cách nào tôi có thể nắm bắt sự kiện trên div và sau đó tuyên truyền nó vào khung nội tuyến cho hành động mặc địnhchụp nhấp vào div xung quanh khung nội tuyến
Trả lời
Nếu nhấp chuột nằm trong khu vực khung nội tuyến, ngữ cảnh iframe xử lý sự kiện nhấp chuột, nó không phát sinh lên đến iframe cha mẹ. Vì vậy, div sẽ không bao giờ đăng ký sự kiện nhấp chuột ở tất cả nếu nó xảy ra trong khu vực khung nội tuyến.
Hơn nữa, nếu iframe chứa trang không thuộc cùng một miền với cha mẹ iframe, bất kỳ tương tác nào đều bị cấm (lại. same origin policy).
Khi same origin policy được đáp ứng, có một vài điều bạn có thể làm, bạn có thể gọi một phương thức trong bối cảnh iframe mẹ:
top.parentFunction();
Vì vậy, trong iframe bạn nghe thêm một sự kiện mà các đại biểu đến iframe parent (có thể truy cập được với tài liệu tham khảo top
.
Sự kiện truyền bá phức tạp hơn rất nhiều, vì vậy tôi chỉ đơn giản là tham khảo Diego Perini's NWEvents library.Tôi tin rằng hệ thống sự kiện của anh ấy là một trong những điều tốt nhất và đặc biệt là tương tác iframe.
Tôi chắc chắn sẽ không bắt đầu viết mã của riêng bạn để đạt được điều này, điều này có thể dễ dàng là một dự án dài một năm nếu bạn muốn làm điều đó đúng và thậm chí sau đó sẽ kém hơn công việc của Diego.
Không có cách nào "tốt" để làm điều đó, nhưng nếu bạn thực sự cần phát hiện nhấp chuột vào Iframe, bạn có thể thực hiện điều đó trong các trình duyệt mới nhất.
<iframe src="http://mtw-ed.com/" id="iframe" style=""></iframe>
<script type="text/javascript">
var inIframe = false;
function checkClick() {
if (document.activeElement
&& document.activeElement === document.getElementById("iframe")) {
if (inIframe == false) {
alert("iframe click");
inIframe = true;
}
} else
inIframe = false;
}
setInterval(checkClick, 200);
</script>
Tập lệnh này sẽ kiểm tra mỗi 200ms xem người dùng có trong Iframe không. Tất nhiên, họ có thể chưa nhấp vào Iframe để đến đó, nhưng tôi e rằng đây là điều tốt nhất bạn có thể làm mà không có giải pháp @ BGerrissen.
Nó sẽ phát hiện 'lần nhấp' đầu tiên, trừ khi bạn nhấp lại. Nó chỉ hoạt động trong các trình duyệt thực sự hiện đại.
Làm việc như một sự quyến rũ cho iPhone –
Tôi đã cố gắng phát hiện nhấp chuột vào nút chia sẻ xã hội (đó là iframe), tạo ra một chỉ thị góc nhỏ ngoài phương pháp này và wow, nó hoạt động hoàn hảo! Cảm ơn! –
Bạn có thể sử dụng thư viện như porthole để chuyển thư giữa cha mẹ và iframe, ngay cả trên các tên miền. Sử dụng điều này sẽ không chính xác tuyên truyền sự kiện (bạn sẽ không thể nhận được đối tượng sự kiện), nhưng bạn có thể tạo sự kiện của riêng mình dưới dạng một thông điệp đơn giản, và sau đó xử lý nó trong phụ huynh dưới dạng nhấp chuột.
Tuy nhiên, tôi đã sử dụng câu trả lời Brendon như đó là công trình đơn giản hơn cho nhu cầu hiện tại của tôi.
- 1. Đóng khung một cách duyên dáng khung (thanh công cụ) xung quanh khung nội tuyến
- 2. div trên đầu khung nội tuyến
- 3. iOS 6 kính lúp nhấp vào công việc xung quanh
- 4. Nhấp đúp vào một div có nội dung có thể chỉnh sửa bên trong và khung nội tuyến sẽ vô hiệu hóa div
- 5. Xoay nội dung xung quanh trục trung tâm trong html5
- 6. Bộ chọn khung nội tuyến khung nội tuyến jquery
- 7. Thay đổi kích thước khung hình xung quanh một bitmap?
- 8. khung nội tuyến ContentWindow
- 9. Tạo khung nội tuyến có javascript gắn thêm vào một div
- 10. Tải liên kết khung nội tuyến vào cửa sổ chính?
- 11. Vấn đề Kích thước khung nội tuyến trong ứng dụng khung nội tuyến Facebook
- 12. Cách xóa đường viền, xuất hiện xung quanh thẻ, khi chúng ta nhấp vào đó?
- 13. Lật xung quanh một div bằng cách sử dụng Javascript
- 14. Thêm bóng hộp CSS xung quanh toàn bộ DIV
- 15. Mở thẻ neo từ khung nội tuyến trong khung chính
- 16. Làm cách nào để tạo khung nội tuyến 100% chiều cao của div chứa trong Firefox?
- 17. divs sụp đổ xung quanh tiêu đề
- 18. Nối biểu định kiểu vào khung nội tuyến với jQuery
- 19. đặt html vào trong khung nội tuyến (sử dụng javascript)
- 20. Dừng xương sống từ việc thêm div xung quanh vào chế độ xem?
- 21. Tạo div bao bọc xung quanh hai div khác với jQuery
- 22. Django khung nội tuyến Safari Fix
- 23. Hộp phương thức JQuery và khung nội tuyến
- 24. Có thể không tải khung nội tuyến trong div ẩn, cho đến khi div được hiển thị không?
- 25. Định tâm một khối nội tuyến DIV
- 26. Cách lấy scrollTop của khung nội tuyến
- 27. vị trí cố định div trong khung nội tuyến không hoạt động
- 28. Đọc nội dung iframe trong tải khung nội tuyến
- 29. Khung nội tuyến ý kiến trên Facebook không tải thêm
- 30. Chạy Google Analytics trong khung nội tuyến?
Chức năng gọi trên khung cha mẹ hoặc tổ tiên không được phép (ngày nay), do đó rất tiếc điều này sẽ không hoạt động (nữa). Lưu ý là có 'window.parent' (khung chính) và' window.top' (luôn là khung "trên cùng", tức là trang mà người dùng đã mở trong trình duyệt). – codener