Tôi có một trình chỉnh sửa có trình tải lên nhiều hình ảnh SWF. Vì không phải ai cũng cần tải lên hình ảnh trong bài viết của họ, tôi cần tải động trình tải lên hình ảnh này khi cần thiết. Tôi phải tải nó trong khung nội tuyến vì người tải lên cần một số tập lệnh bên ngoài được tải trước. Và vì tôi cần nó là biến gọi lại cho trình soạn thảo của tôi để sử dụng tôi muốn biết liệu các tập lệnh trong iframe có thể tương tác với các tập lệnh trong trang chính hay không. Hoặc nếu tôi không thể làm điều đó, cách khác để làm điều này là gì?Có thể tập lệnh trong iframe tương tác với tập lệnh trong trang chính
Trả lời
Nếu chúng ở trên cùng một tên miền, có.
Đối tượng parent
là cửa sổ chính của iframe.
Nếu bạn đã có một biến a
trong phạm vi toàn cầu của cửa sổ cha mẹ, bạn có thể vận dụng nó trong iframe như thế này:
parent.a = "new value";
Tương tự, nếu a
là một chức năng trong phạm vi toàn cầu của phụ huynh cửa sổ, bạn có thể gọi nó như thế này:
parent.a(args);
script trong iframe có thể tương tác với các kịch bản trong trang chính
Chỉ khi iframe và cha mẹ có cùng tên miền chính xác, do same origin policy (MDC link).
postMessage in Html5, được hỗ trợ bởi Internet Explorer 8.0+, Firefox 3.0+, Safari 4.0+, Chrome 1.0+ và Opera 9.5+, là cách tôi đã sử dụng nó. Nếu bạn không nhớ thiếu hỗ trợ trong IE7 và các phiên bản cũ hơn, thì đây là cách thực hiện nó.
Javascript trong cửa sổ chính:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event){
var source = event.source.frameElement; //this is the iframe that sent the message
var message = event.data; //this is the message
//do something with message
}
Javascript trong iframe;
var message='hello, big window!'; //could be of any type, string, number, array, object, have fun
window.parent.postMessage(message,'*'); //the '*' has to do with cross-domain messaging. leave it like it is for same-domain messaging.
Tất nhiên bạn có thể làm theo cách khác, có cửa sổ chính gửi thư đến khung nội tuyến và có một số cuộc đối thoại qua cửa sổ theo cách đó.
Nếu khung nội tuyến đến từ một miền khác, nhưng bạn có quyền kiểm soát nội dung, bạn có thể liên lạc giữa hai nội dung theo một vài cách khác nhau. Cách đơn giản nhất là "nói chuyện" thông qua các cặp khóa/giá trị trong URL của iFrame, vì cả cha lẫn mẹ và iFrame đều có quyền truy cập vào đó.
Cách tiếp cận phức tạp hơn là sử dụng proxy iFrame, được mô tả thực sự tốt ở đây: http://www.julienlecomte.net/blog/2007/11/31/ sử dụng Yahoo Pipes để gửi thư qua lại khá độc đáo.
Để mở rộng Andy của câu trả lời Can scripts in iframe interact with scripts in the main page:
Sử dụng jQuery.postMessage Plugin http://benalman.com/code/projects/jquery-postmessage/docs/files/jquery-ba-postmessage-js.html
trình duyệt Tested Internet Explorer 6-8, Firefox 3, Safari 3-4, Chrome, Opera 9.
- 1. Có thể viết kịch bản lệnh shell nhanh hơn tập lệnh tương đương trong Perl không?
- 2. Tập lệnh để chạy các tập lệnh khác trong sqldeveloper
- 3. Tương đương với hàm setTimeout và setInterval trong Tập lệnh #
- 4. Nhiều tập lệnh với requirejs
- 5. Có thể tham khảo các tập lệnh khác trong tệp tập lệnh TSQL không?
- 6. Thao tác một tập lệnh python trong debian bằng virtualenv
- 7. Tôi làm cách nào để viết tập lệnh php tương tác dòng lệnh?
- 8. Trình quản lý tập lệnh Ajax và trang chính
- 9. Trong tiện ích của Chrome, tập lệnh nội dung không thể ảnh hưởng bên trong iframe?
- 10. Tập lệnh OpenLayers có sẵn trong CDN?
- 11. Tập lệnh Linux- Thao tác ngày
- 12. Cách đưa đầu vào tương tác vào tập lệnh được chạy từ dòng lệnh
- 13. Sự kiện kích hoạt trong tác vụ tập lệnh
- 14. Trong tập lệnh Julia, bạn có thể cho biết tập lệnh đã được nhập hoặc thực thi trực tiếp không?
- 15. Gỡ lỗi/in trong tập lệnh Hubot
- 16. tạo kịch bản lệnh chéo trang web với Iframe
- 17. Sử dụng lệnh passwd từ trong tập lệnh shell
- 18. Phát hiện khi một tập lệnh python đang được chạy tương tác trong ipython
- 19. Phát hiện xem tập lệnh PHP có đang chạy tương tác hay không
- 20. Chặn tập lệnh trong IE
- 21. Chạy các lệnh tương tác trong Paramiko
- 22. Phát hiện trình bao tương tác bên trong tập lệnh ENV ksh
- 23. Có cách nào để làm cho python trở nên tương tác ở giữa tập lệnh không?
- 24. Chạy tập lệnh Python từ trang web
- 25. MSDeploy với tập lệnh sql
- 26. jsdom không xử lý tập lệnh bên trong trang web
- 27. Kết nối với sqlplus trong tập lệnh shell và chạy tập lệnh SQL
- 28. Tập lệnh Src đang vi phạm trang
- 29. Có khả năng thực thi tập lệnh Python khi đang ở chế độ tương tác
- 30. Mảng trong loại tập lệnh