Mobile

[jQuery] Seitenabfrage funktioniert nur in IE

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hallo,

ich hab gestern Abend diesen Thread erstellt, das Problem ist das gleiche, der Lösungsansatz aber ein anderer.

Ich habs nun hinbekommen mit Hilfe von jQuery Urls auf Erreichbarkeit zu testen. Dieser Code funktioniert im IE, aber Mozilla FF und Safari streiken. jQuery soll synchron arbeiten und die url - Verbindung testen (iphone.de als Beispiel). Bei Erfolg soll "success" ausgegeben werden und die Variablen port und protokoll überschrieben werden. Bei Misserfolg der Verbindung sollen die initialisierten Variablen port und protokoll so bleiben und nach dem Timeout "unable" erscheinen.

Wie bekomme ich dieses Script in FF zum laufen?

HTML:
<html>
<head>
<script type="text/javascript" src="jquery/jquery.js"></script>
</head>

<body>

<script type="text/javascript">
$(document).ready(function() {

var tick = function() {              
alert('unable');
}  

var port = 80;
var protokoll = 'http';

var loadTimeout = setTimeout(tick, 2000);
$.ajax({
async: false, 
url: "http://www.iphone.de",
timeout: 2000,
success: function() {
port = 1935;
protokoll = 'rtmp';
alert('success');
clearTimeout(loadTimeout);
}
});

alert(protokoll+':'+port);
});
</script>

</body>
</html>

EDIT:
In FF und Safari erscheinen bei der Ausgabe unable und Port 80 / http
In IE success und Port 1935 / rtmp <- wie es sein soll
 
Zuletzt bearbeitet:
:rolleyes: ... seit 1 1/2 Tagen recherchier ich nun schon, wie man am besten Client-seitig mal ne Verbindung zu nem Server testen kann, ist das denn so sicherheitsbedenklich, dass es keine einfachen Lösungen gibt?!

@ Mr.Snoot: welche FF Version verwendest du?

hab mal ein

error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}

eingebaut. FF spuckt mir dazu diese Fehlermeldung aus (mit der ich nix anfangen kann natürlich ... ><):


[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: HOST/jquery/jquery.js :: anonymous :: line 6054" data: no]
 
danke... :freak: .. die hab ich auch und bei mir läufts net. ok, wie ich grad gesehen habe war mein jquery noch 1.4.4.. mit 1.5 gehts jetzt auch im IE nicht mehr (No Transport) und FF verweigert immer noch den Dienst. Wäre langsam an der Zeit für nen Erfolg
Ergänzung ()

Hallo liebes Tagebuch,

die neuesten Erkenntnisse in dieser Verzweiflungsodyssee:

nach viel Rumspielerei hab ich nun rausgefunden, dass man mit der jQuery 1.5 Version direkt einen Pfad zu einer Datei angeben muss (Bsp: http://iphone.de/file.php) und nicht mehr nur auf eine Adresse.

Das ist klasse, so kann ich nun meinen Portscan auf die Art wohl auch vergessen
 
Zuletzt bearbeitet:
Rain schrieb:
Das ist klasse, so kann ich nun meinen Portscan auf die Art wohl auch vergessen

Dafür war Ajax auch nie gedacht, da sollte eigentlich immer die Same-Origin-Policy greifen und den Zugriff verbieten, da HTTP-Port ungleich deinem angefragten Port ist.
Aus dem Grunde wird auch der Ansatz in deinem anderen Post nicht funktionieren. Du könntest einen Port-Check aber über Flash realisieren.
 
Zuletzt bearbeitet:
Irgendwie hatte ich Hoffnung mit irgendwelchen Tricks ne vernünftige Lösung zu finden, aber die ganzen Fehlschläge zeigen mir das Gegenteil.

Mit Flash sagst du?! Ich hab schon bisschen gesucht und such auch weiterhin, aber so ne richtige fertige Lösung hab ich noch nicht gefunden. Ich kann leider Flash überhaupt nicht, dass ich mich da irgendwie selbst ransetzen könnte. Hast du vielleicht einen Link zu dem Flash-Portscan Vorschlag?
 
Ich denke nicht, dass es eine fertige Lösung gibt, aber du kannst mit Flash zu bestimmten gewünschten Ports verbinden, natürlich muss man mit einer crossdomain.xml auch dies erlauben.
 
Ich versteh den Sinn hinter dem Timeout nicht. Ajax timed automatisch out.. Warum benutzt du nicht einfach den Error Handler?

Außerdem kommt sowas in den Header.

PHP:
<script type="text/javascript">
$(document).ready(function() {
  var port;
  var protokoll;

  $.ajax({
    async: false, 
    url: "http://www.iphone.de",
    timeout: 2000,
    beforeSend: function() {
      port = 80;
      protokoll = 'http';
    },
    success: function() {
      port = 1935;
      protokoll = 'rtmp';
      alert('success');
    },
    error: function() {
      alert('unable');
    }
  });

  alert(protokoll+':'+port);
});
</script>
 
Den Error-Handler hab ich ja schon eingebaut gehabt (3. Post). Ich kann mich um die Flash-Variante jetzt auch nicht weiter kümmern, d.h. nicht noch nen Tag dran verschwenden. Ich setz mich morgen wieder an die Version mit Netstat auslesen.

Ein Java-Programmierer entwickelt mir dazu eine Applikation, welche den Netstat auf Änderung überprüft und mir dann irgendwelche .txt's mit den Clienten und erreichten Port gibt, die ich dann in PHP weiterverwende. Beim einloggen werden dann im Hintergrund 2 unsichtbare iframes mit den jeweiligen Zielports geöffnet. Keine schöne Lösung, aber hier gibts wohl keine schöne Lösung.

Ich danke euch!
 
Zurück
Oben