2012-07-25 17 views
7

Próbuję zmodyfikować zawartość elementu iframe, ale to nie działa.Nie można zmodyfikować treści elementu iframe, co jest nie tak?

To mój main.html

<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> 

To mój ifr.htm

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

Element iframe jest niezależny od ramki, która go wyświetla. Aby zastosować zmiany (style/treść/itd.) Do strony iFrame, musisz edytować tę stronę. Jeśli edytowałeś tę stronę, ale nie widzisz zmian, prawdopodobnie musisz wyczyścić pamięć podręczną dla tej strony. Wejdź na stronę iframe bezpośrednio i zacznij odświeżać, aż zobaczysz zmianę – ckaufman

+0

, którą możesz rozwinąć na "nie działa"? czy masz jakieś błędy? – jbabey

+0

[Działa tutaj] (http://jsfiddle.net/heera/HuuMZ/1/), treść jest zmieniana. –

Odpowiedz

13

Proszę nie zapominać o zasadach cross-domain, w przeciwnym razie nie będzie działać.

żywo demo:http://jsfiddle.net/oscarj24/wTWjF/

(Wystarczy wiedzieć, ja nie używam strony 404, spójrz)

Spróbuj tego:

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

Zakładając, że uhonorowanie reguł URL, to brzmi jak problemu rozrządu. Możliwe, że element iframe został już załadowany po uruchomieniu document.ready strony nadrzędnej.

Możesz spróbować zmienić swoje frame.load na frame.ready jako .ready zostanie natychmiast uruchomiony, jeśli zostanie przywiązany po uruchomieniu już gotowego zdarzenia.

+0

To również brzmi wiarygodne. –

+0

próbowałem, ale to nie działa. – Slay

+0

To musi działać! tutaj jest przykład http://jsfiddle.net/MBjjR/ – mabbas

1

Zrobiłbyś coś takiego:

Ustawiasz src attri bute twojego iFrame do pustej strony (blank.htm) lub "", a następnie w gotowy handler zmienić src na 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"); 
}); 
Powiązane problemy