2010-12-14 27 views
7

Tôi có một iframe:iFrame Trống trong IE

<iframe src="http://externaldomain.com/something.html"> 

Nếu something.html từ externaldomain.com có ​​css:

html { position: relative; } 

Trong IE, nó sẽ làm cho iframe như trống. Tất cả các trình duyệt khác đều ổn.

Bất kỳ ai biết giải pháp? Hãy nhớ chính sách gốc giống nhau. Tôi không thể thay đổi bất cứ điều gì trong iframe với javascript hoặc thay đổi css như iframe src là bên ngoài.

Cảm ơn.

+0

Bạn có chắc chắn 100% các iframe là trống xuất phát từ đó? Tôi không thể nghĩ tại sao nó nên –

+1

Bạn có thể cung cấp một url mẫu để thử nghiệm không? –

+0

bạn có thể cung cấp mã đầy đủ mà bạn đang sử dụng không? – Varun

Trả lời

0

Tôi sẽ bắt đầu bằng cách đọc số Another Cross Domain iFrame Communication Technique này và sau đó xem xét giải pháp AJAX thanh lịch hơn. Tôi đã thấy rất nhiều tình huống mà ifram miền chéo không hoạt động (và vì lý do chính đáng).

IFrame là một bước trên IE trong Axis of Evil (IMO)

1

Để giải quyết sự cố, nếu bạn thất bại, bạn có thể tải xuống nội dung của something.html bằng cách sử dụng logic phía máy chủ, như ASP.NET hoặc PHP và lưu nó trên máy chủ web cục bộ của bạn ở đâu đó. Sau đó, bạn có thể tránh chính sách cùng nguồn gốc hoặc thậm chí bạn có thể tự sửa đổi HTML/CSS trên máy chủ, ví dụ: xóa vị trí vi phạm: tương đối.

+0

Đây là một giải pháp rất xấu! Trước hết, bạn có thể kết thúc với tài liệu có bản quyền trên máy chủ của riêng bạn. Sau đó, có vấn đề đường dẫn tương đối với hình ảnh và không hoạt động, và thậm chí nếu bạn thay đổi chúng thành đường dẫn tuyệt đối, bạn sẽ kết thúc với hình ảnh không tải do bảo vệ đường ... – patrick

+0

@patrick Đồng ý, nhưng câu hỏi mô tả một tình huống rất khó xử để bắt đầu. Nếu bản quyền là một vấn đề, người ta chỉ có thể tải xuống từ trang web mục tiêu và chuyển nó vào mỗi yêu cầu (hiệu suất phụ tối ưu, tất nhiên). Hotlink bảo vệ là một vấn đề có thể, nhưng tôi không thể biết chắc chắn tình hình là gì với điều đó. Và liên quan đến đường dẫn tương đối, bạn đã trả lời câu hỏi của riêng bạn. Đó là lý do tại sao tôi bắt đầu câu trả lời của tôi với "Như một cách giải quyết, nếu tất cả đều thất bại ..." –

8

Sử dụng cú pháp sau nó sẽ hoạt động.

Cung cấp cho style = "position: relative;" vào khung nội tuyến của bạn, nó sẽ hoạt động trong IE.

+0

Cảm ơn điều này đã làm các trick cho tôi! Mẹo tuyệt vời – Beriz

+0

Đôi khi, khung nội tuyến chứa thông tin trang nhưng thông tin đó bị vắt. Trong trường hợp đó, khung nội tuyến phải có giá trị chiều cao tối thiểu, chiều rộng tối thiểu để gặp phải vấn đề đó – kidz

0

iframe phải có thuộc tính ID

window.parent.document.getElementById('iframeid').contentWindow.document.execCommand('print', false, null); 
Các vấn đề liên quan