2010-11-07 37 views
16

Có thể sử dụng jQuery để tạo thành phần và nối thêm nội dung html vào nó mà không có thuộc tính được chỉ định là src không?Tạo thành phần <iframe> và nối thêm nội dung html vào nó bằng jQuery

Vấn đề là tôi cần tạo một iframe và tôi đã có nội dung của nó (tôi nhận được nó dưới dạng phản hồi AJAX). Rất tiếc, tôi không thể chỉ định URL tôi nhận được phản hồi từ thuộc tính src. Tôi muốn làm điều gì đó như:

$('<iframe id="someId"/>').append(response).appendTo("#someDiv"); 

Trả lời

34

Hãy thử điều này:

$('<iframe id="someId"/>').appendTo('#someDiv') 
          .contents().find('body').append(response); 
+2

Bạn có thể thêm nội dung vào iframe trước khi thêm nó vào dom không? Cuz sẽ rất tuyệt. Một triệu upvotes cho rằng nếu tôi có thể :) – dezman

2

Tại sao lại sử dụng iframe? Dán tất cả vào thùng chứa khác. Tôi không thể nghĩ ra bất kỳ lợi thế nào của iframe ngoại trừ việc bạn có thể tải một trang từ thuộc tính src.

Tôi giả sử nếu bạn cần khung nội tuyến cho một số mục đích khác, như bạn tải trong trang nhưng bạn muốn thay thế bằng phản hồi ajax, bạn có thể sử dụng jQuery để hoán đổi iframe cho div và ngược lại khi cần .

Khả năng khác là thay vì ajax, sửa đổi tập lệnh php ajax của bạn để xuất toàn bộ trang mà bạn muốn trong khung nội tuyến. Sau đó, sử dụng jQuery để thay đổi địa chỉ của trang được yêu cầu trong khung nội tuyến với các tham số mới để hiển thị nội dung được cập nhật.

+1

Tôi tìm thấy một trường hợp này rất hữu ích. Người dùng của tôi muốn có cách in nội dung của một phần cụ thể của trang động. Lúc đầu, tôi mở một cửa sổ mới và đặt nội dung của tôi vào đó, nhưng cửa sổ bật lên bị dính. Vì vậy, thay vào đó tôi đã sử dụng một iframe trống mà tôi đặt nội dung vào, sau đó gọi window.print trên iframe: window.frames ['someId']. Print(); –

+0

Đây là một trường hợp khác: iframe được sử dụng để che phủ các điều khiển ActiveX trong IE, nếu không nằm trên bất kỳ phần tử nào khác. Nhưng nếu có một số loại kiểm soát truy cập tùy chỉnh, cách duy nhất để đi là làm theo các thủ tục trong câu trả lời đúng. – malber

+0

Nếu bạn muốn báo cáo lỗi AJAX và lỗi trở lại dưới dạng trang HTML, thì cách dễ nhất (và có thể là tốt nhất) để gắn toàn bộ phản hồi lỗi trong khung nội tuyến. – mhenry1384

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