Problem mit Verbindung

chickenwings

Erfahrenes Mitglied
Hallo Leute,

Folgendes: Auf meiner Seite binde ich mittels JavaScript eine Wetterbox von donnerwetter.de ein. Mit jedem refresh der Seite, also eben auch ein ganz normaler Seitenaufruf, wird der Link zu donnerwetter.de aufgerufen. Das Problem ist jetzt, wenn es Netzwerkprobleme gibt oder der Server von Donnerwetter lahmt, dann blockiert der Browser komplett, weil die Verbindung nicht zustande kommt. Nun die Frage: kann ich vorher prüfen, ob die Verbindung steht, bzw. gibt es asynchrone Möglichkeiten (Ajax, damit kenne ich mich allerdings nicht aus), diese Wetterbox zu laden?

So sieht der Link aus, den ich auf meiner Seite verwende:
Code:
<div class="wetter">
	<script type="text/javascript" language="javascript" src="http://www.donnerwetter.de/wetter/net/boxregio.mv?typ=1&plz=2&color_bg=FFFFFF&color_hi=FFFFFF&color_txt=333333&width=192"></script>
        <noscript>JavaScript ist deaktiviert - leider sehen Sie hier kein aktuelles Wetter.</noscript>
</div>

Danke für jegliche Hilfe
chickenwings
 
Ja, AJAX wäre eine gute Wahl.

Du könntest das Skript direkt per AJAX abfragen und seinen Inhalt direkt verarbeiten.

Verarbeiten soll heissen:
  • Das Skript auslesen
  • nachgucken, ob da das geliefert wurde, was du erwartest(JS-Code)
  • Aus dem JS-Code alles "extrahieren", was jeweils zwischen document.writeln() steht
  • dieses "Extrakt" der innerHTML-Eigenschaft eines beliebigen Seitenelementes zuweisen.
 
Hi,

hmm, das verstehe ich noch nicht so ganz.
Es ist ja so, daß der Aufruf des Links mir ein komplettes und fertiges Bild, eben eine Wetterbox, zurückliefert. Das was in meinem Bsp. zu sehen ist, ist prinzipiell die Wetterbox. Ich könnte mir vorstellen, diesen Link in einer AJAX-Funktion aufzurufen und dann das was ich zurückerhalte in HTML einbetten, wenn das mein Verständnis für AJAX so wiedergibt.

Sehe ich das richtig?
Dann muss ich mich nur noch in die entsprechenden AJAX-Funktionen einarbeiten.

Gruss
chickenwings
 
Fast...das was das Skript macht, ist normalerweise dass es per writeln() HTML-Code in die Seite schreibt.

Code:
document.writeln('<form name="hpwt" method="post" action="http://www.donnerwetter.de/wetter/net/link.mv" target="_blank"><table border="0" cellspacing="1" cellpadding="0" bgcolor="#FFFFFF" width="192"><tr><td><table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"><tr><td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"></font><table width="192" border="0" cellspacing="0" cellpadding="0"><tr><td valign="bottom" align="right"><a href="http://www.donnerwetter.de/" target="_blank"><img src="http://www.donnerwetter.de/images/block_wolke.gif" width="28" height="40" border="0"></a></td><td valign="bottom" align="left"><font face="Verdana, Arial, Helvetica, sans-serif" color="#333333" size="2"><b>Hamburg<br></b><font size="1">Di. 27.2.2007</font></tr></table></td></tr><tr><td>')
document.writeln('<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr align="center" valign="bottom" bgcolor="#FFFFFF"><td><font size="1" color="#333333" face="Verdana, Arial, Helvetica, sans-serif">Abend</font></td><td><font size="1" color="#333333" face="Verdana, Arial, Helvetica, sans-serif">Nacht</font></td></tr>')
document.writeln('<tr align="center" valign="bottom"><td><a href="http://donnerwetter.de/region/suchort.mv?search=20000" target="_blank"><img src="http://www.donnerwetter.de/images/wetsym_6.gif" alt="regnerisch" width="60" height="43" border="0"></a></td><td><a href="http://donnerwetter.de/region/suchort.mv?search=20000" target="_blank"><img src="http://www.donnerwetter.de/images/wetsym_n6.gif" alt="regnerisch" width="60" height="43" border="0"></a></td></tr>')
document.writeln('<tr align="center" valign="bottom" bgcolor="#FFFFFF"><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#333333" size="1">5&deg;C</font></td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#333333" size="1">4&deg;C</font></td></tr></table></td></tr>')
document.writeln('<tr><td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#333333" size="2"><b>mehr Wetter:</b><br></font>')
document.writeln('<font size="1"><select name="link"><option value="region/region.hts?plz=20000" selected>Trend</option><option value="biowetter/region.hts?plz=20000">Biowetter</option><option value="strasse/region.hts?plz=20000">Stra&szlig;e</option><option value="strasse/kratzenregion.hts?plz=20000">Kratzen?</option></select><input type="submit" name="B" value="&gt;"></font>')
document.writeln('<font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://donnerwetter.de/region/suchort.mv?search=20000" target="_blank"><font color="#0000FF">www.Donnerwetter.de</font></a></font></td></tr>')
document.writeln('</table></td></tr></table></form>')
...so sieht es aus, was das Skrpt liefert.

Da man bei AJAX nicht per write() arbeiten kann, da asynchron gearbeitet wird, musst du das herausfiltern, was zwischen document.writeln('') steht.
 
Mit Ajax sind nur Anfragen an die Domain möglich, von der das Script aus aufgerufen wird.
Möglich wäre ein PHP Script, das vorher prüft, ob der entsprechende Server online ist, und wenn nicht, dann gibt es den <script...></script> Teil nicht aus
 
aha,

dann müsste doch folgender Gedanke funktionieren:
ich habe auf meinem Server, also in meiner Domain, ein PHP Script, das sich mit der donnerwetter.de verbindet und auch prüft, ob diese Verbindung klappt. Dann auf meiner Seite einen Aufruf per AJAX auf diese Datei, die im Erfolgsfall die Wetterbox zur Verfügung stellt und anzeigt.

Oder ?

danke
chickenwings
 
Das ist aber doppelt gemoppelt. Das PHP-Script kann das gleich vor der Ausgabe prüfen und dann wahlweise das Script ausgeben oder nicht.
 
ja, aber das Problem ist ja das der Browser stets auf die Ressource warten muss, deshalb ging ich den Gedanken einer asynchronen Lösung. Prüfen durch Ping etc. dauert auch seine Zeit und selbst wenn ein Ping durchkommt, kann die Auslieferung des Bildes durchaus länger dauern, je nachdem wie viele gleichzeitige Anfragen kommen.
 
Dann würd ich mal folgendes versuchen:


An der stelle wos hin soll.
<div id='wetter'></div>


wo anders:

window.onload = function() {
document.getElementById( 'wetter' ).innerHTML ="<script src='http://donnerwetter.de/script.js'></script>";
}
 

Neue Beiträge

Zurück