• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Ich möchte einen Inline Frame alles paar Sekunden aktualisieren

Blackhead77

New member
Folgende Aufgabenstellung:


Ich möchte per Javascript eine XML Dastei auslesen und diesen Inhalt (eine Webadresse) in einem Inline Frame Anzeigen lassen. Dies soll alle paar Sekunden oder so aktualisiert werden.

Hierzu nutze ich setTimeout(changeUrl, 5000);. Funktioniert aber im insgesamten noch nicht ganz da ja dass ganze irgedwie ständig aktualisiert werden muss.

Code:
<script type="text/javascript">

setTimeout(auto_reload(),20000);

function auto_reload(){

    $.ajax({
               dataType:'xml',
               url:'publish.xml',
               success: function(data) {
                   xmlReader(data);
               }
           });
}

	
function xmlReader(daten) {
        arr = []; 
                    
        $(daten).find('item').each(function(index, value) {
            var name = $(this).find('name').text();
            var url = $(this).find('url').text();

           
                        
            arr.push({ name: name, url:url});

			
        });
		reader();
	function reader()
	{

	
				var changeUrl = $('#frame').attr('src', 'http://www.vorsatzomat.ch/' );
				
				
				setTimeout(changeUrl, 100);
				
	
	}
	}
	
	




</script>
 
Zuletzt bearbeitet von einem Moderator:
Du rufst mit dem zweiten Tineout ja auch nur den Namen deiner Variablen auf, wozu soll das gut sein?
Und wo übergibst du denn die ausgelesen URL?

Ein Timeout von 100 ist ausserdem zu klein, da hier Millisekunden angegeben werden müssen.
 
Code:
setTimeout(auto_reload(),20000);
Mach' aus dem window.setTimeout() doch mal ein window.setInterval()...

Aber die Funktion reader() (also dass es überhaupt eine Funktion ist) und der Timeout darin sind wirklich komplett unnötig.

... hm... irgendwie verstehe ich nicht, was du mit deinem Code erreichen willst... beschreibe das doch nochmal genauer.

PS: dein Codelayout ist unübersichtlich und inkonsistent. Das solltest du ändern, da ein gescheit formatierter Code ihn viel leichter lesbar und wartbar macht.
 
Hirnhin übergebe ich die ausgelesen URL:

HTML:
<iframe id="frame" src="http://www.ebay.de" width="100%" height="1000" name="SELFHTML_in_a_box">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</a></p>
</iframe>

Also das einzigste was ich jetzt ersteinmal erreichen möchte ist dass die funktion auto_load automatisch alle paar Sekunden ausgeführt wird und in den iframe die Seite neu lädt dies tut es noch nicht.

setIntervall(auto_reload(),20000); lädt dass ganze auch nur einmal.

Siehe hier: . Der vorsatzomat lädt und lässt sich benutzen, lädt aber nicht neu nach ein paar Sekunden. Bzw. Schon aber es wird nicht und nur kurz angezeigt.
 
Zuletzt bearbeitet:
ok, aber mit

Code:
arr.push({ name: name, url:url});

lädst du dir die URL ja in ein Array.
Ich finde aber nirgendwo, wo du das Array wieder ausliest.

Da müsste ja irgendwo eine Schleife sein.

Code:
for (var i=0; i<arr.length; i++) {
var changeUrl = $('#frame').attr('src', arr[i]);}
 
Zuletzt bearbeitet:
setIntervall(auto_reload(),20000); lädt dass ganze auch nur einmal.
Damit startest du alle 20 Sekunden die Funktion auto_reload(). Ist das wirklich dein Wunsch? Denke kkapsner hatte den inneren setTimeout() in der Funktion reader().
PS: setInterval und setTimeout sollte man eine Funktionsreferenz übergeben, also setIntervall(auto_reload, 20000);


Siehe hier: LINK AUF WUNSCH ENTFERNT. Der vorsatzomat lädt und lässt sich benutzen, lädt aber nicht neu nach ein paar Sekunden. Bzw. Schon aber es wird nicht und nur kurz angezeigt.
setTimeout(changeUrl, 100); ist Unsinn, da changeUrl keine Referenz auf eine Funktion ist. var changeUrl = $('#frame').attr('src', 'http://www.vorsatzomat.ch/' );Es wird nur das zurückgegebene jQuery-Objekt in der Variable changeUrl gespeichert mehr nicht. Denke du meinst eher sowas hier:
Code:
function xmlReader(daten) {
	arr = [];

	$(daten).find('item').each(function () {
		arr.push({
			name: $(this).find('name').text(),
			url: $(this).find('url').text()
	});

	$('#frame').attr('src', 'http://www.vorsatzomat.ch/' );

	setTimeout(function () {
		$('#frame').attr('src', 'http://www.vorsatzomat.ch/' );
	}, 100);
}

PS: 100 Milisekunden empfinde ich doch arg kurz. Hat der Browser denn dann überhaupt genug Zeit zum laden und darstellen der Seite im iframe?
 
Zuletzt bearbeitet:
PS: 100 Milisekunden empfinde ich doch arg kurz. Hat der Browser denn dann überhaupt genug Zeit zum laden und darstellen der Seite im iframe?

halte ich für unwarscheinlich!


--------------------------------------------------------------------------------

Aber so ganz werde ich aus deinem Code aus #6 im Moment auch nicht schlau, mini.

miniA4kuser schrieb:
Denke du meinst eher sowas hier:
[...]
Code:
$('#frame').attr('src', 'http://www.vorsatzomat.ch/' );

da wird doch als src immer die URL "http://www.vorsatzomat.ch/" übergeben, wozu wird denn dann das hier gemacht:?
Code:
$(daten).find('item').each(function (index, value) {
		arr.push({
			name: $(this).find('name').text(),
			url: $(this).find('url').text()
	});
 
Zuletzt bearbeitet:
Da kann ich dir auch nicht beantworten, da der TE hier keine Angabe darüber machen will, kann, etc.
Da ich die Funktion xmlReader verändert habe, habe ich nur noch etwas aufgeräumt und ein paar unnötige Variablen entfern...

Ups... Da waren ja noch zwei unnötige...
 
Zurück
Oben