2010-07-15 24 views
13

Ich habe ein Iframe-Element mit einem zufälligen scr-Attribut. Wenn ich die Seite jedes Mal aktualisiere, sollte der Iframe die Seite mit verschiedenen Abfrageparametern basierend auf dem src-Attribut laden. Aber in Firefox, wenn ich versuche, dynamische URL in einem Iframe zu laden, führt es immer das erste Mal ausgeführt URL-Ereignis obwohl das Src-Attribut dynamisch ändert. Die Abfrageparameter werden auch nicht korrekt übergeben. Also, wie kann ich dieses Problem lösen?Iframe src Caching-Problem auf Firefox

zB:

<?php 

$url = "http://localhost/test.php"; 

$rand_val = rand(1000, 9999); 

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>"; 

?> 

Antwort

4

Wir hatten das gleiche Problem mit Firefox Caching der iframe src und deaktivieren Sie den Cache auf der ursprünglichen Seite sowie die Iframe-Seite hat nicht geholfen. Wir setzen den folgenden Code (jQuery-Code) in der onload Funktion von iframe:

$(parent.document).find("iframe").each(function() { 
    // apply the logic only to the current iframe only 
    if(this.contentDocument == window.document) { 
     // if the href of the iframe is not same as 
     // the value of src attribute then reload it 
     if(this.src != location.href) { 
     this.src = this.src; 
     } 
    } 
}); 
+0

hey Rajiv, Ihre Lösung funktioniert perfekt. Danke für die Antwort – karuh24

+0

In dieser Lösung lädt die ursprüngliche URL immer zuerst ... – Dallin

1

Ihr Code in PHP führt einmal und sendet den Inhalt an den Browser. Wenn Sie die Seite aktualisieren, wird der Code auf dem Server nicht erneut ausgeführt, da er vom Cache bereitgestellt wird. Der src des iframe verwendet also dieselbe Zufallszahl.

Um dies zu vermeiden, müssen Sie die Zwischenspeicherung der Originalseite (nicht des iFrames) deaktivieren. Oder Sie könnten die Zufallszahl auf der Client-Seite (mit JavaScript) generieren lassen, so dass sie jedes Mal einzigartig ist.

+0

Ich habe bereits das Caching sowohl auf dem Server als auch auf der Clientseite deaktiviert, aber es funktioniert nicht. Ich sah die Ansichtsquelle, die zufällige ID wird immer korrekt erzeugt und der iframe src ändert sich ebenfalls korrekt, aber das Objekt $ _REQUEST scheint nicht geändert zu werden. – karuh24

3

Es wird als Fehler von Firefox berichtet hat: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

Eine Abhilfe ist, die src des iframe Zurücksetzen: document.getElementById ('iframe_id'). src = 'target_url';

Immer noch gibt es zwei Anfragen: die erste Anfrage ist falsch und abgebrochen unmittelbar vor der zweiten Anfrage, die korrekt ist.

+0

vor fünf Jahren und Käfer (ähnlich?) Immer noch in 41.0.2 ... schade, ich kann es ohne sensible Kundendaten nicht replizieren:/ – Buksy

+0

Fast 6 Jahre später, und heute habe ich auf FF 48 aufgerüstet. Noch ein Problem! -_- – indextwo

Verwandte Themen