2012-07-25 66 views
7

Tôi đang cố sửa đổi nội dung của iframe nhưng nó không hoạt động.Không thể sửa đổi nội dung của khung nội tuyến, điều gì là sai?

Đây là main.html tôi

<html> 
<head><title>Main page</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
</head> 
<body> 

<h3>Main page</h3> 
<iframe src="ifr.htm" id="ifr" name="ifr"></iframe> 
</body> 

<script> 
$(document).ready(function(){ 
    $('#ifr').load(function(){ 
     $('#ifr').contents().find('body').html('Hey, i`ve changed content of <body>! Yay!!!'); 
    }); 
}); 

</script> 
</html> 

Đây là ifr.htm tôi

<html> 
<head><title>Iframe page</title></head> 
<body> 
Content to be displayed in iframe ... 
</body> 
</html> 
+0

Khung nội tuyến độc lập với khung hiển thị nó. Để áp dụng các thay đổi (kiểu/nội dung/v.v.) cho trang iFrame, bạn cần chỉnh sửa trang đó. Nếu bạn đã chỉnh sửa trang đó nhưng không thấy các thay đổi, có thể bạn chỉ cần xóa bộ nhớ cache cho trang đó. Truy cập trang iframe trực tiếp và nhấn làm mới cho đến khi bạn thấy thay đổi – ckaufman

+0

bạn có thể xây dựng trên 'không hoạt động 'không? bạn có gặp lỗi gì không? – jbabey

+0

[Làm việc ở đây] (http://jsfiddle.net/heera/HuuMZ/1/), nội dung đang được thay đổi. –

Trả lời

13

Xin đừng quên chính sách cross-domain, nếu không nó sẽ không hoạt động.

Live Demo:http://jsfiddle.net/oscarj24/wTWjF/

(Chỉ cần biết, tôi không sử dụng một trang 404, hãy xem)

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

$(document).ready(function(){ 
    $('#ifr').ready(function(){ 
     $(this).contents().find('body').html('Hey, I have changed content of <body> Yay!'); 
    }); 
});​ 
2

Giả sử bạn đang tôn vinh chính sách cross-domain, điều này nghe có vẻ giống như một vấn đề thời gian. Rất có thể iframe của bạn đã tải xong khi trang document.ready của trang mẹ kích hoạt.

Bạn có thể thử thay đổi frame.load thành frame.ready.ready sẽ kích hoạt ngay lập tức nếu nó bị ràng buộc sau khi sự kiện sẵn sàng đã được kích hoạt.

+0

Điều này cũng có vẻ hợp lý. –

+0

đã thử nhưng không hoạt động. – Slay

+0

Nó phải hoạt động! đây là một ví dụ http://jsfiddle.net/MBjjR/ – mabbas

1

Bạn sẽ làm gì một cái gì đó như thế này:

Bạn đặt số src attri bute trong số iFrame của bạn đến một trang trống (blank.htm) hoặc "", sau đó trong trình xử lý sẵn sàng, bạn thay đổi src thành ifr.htm.

$(document).ready(
    $('#ifr').load(function(){ 
     $(this).contents().find('body').html('Hey, i`ve changed content of <body>! Yay!!!'); 
    }); 
    $('#ifr').attr("src", "ifr.htm"); 
}); 
Các vấn đề liên quan