controleer internet verbinding
Ik zoek een script van puur javascript (geen jQuery/AJAX/iets anders), die controleert of je een internet verbinding hebt.
Ik heb gezocht of ik kon vinden wat je IP adres is met javascript, maar ook dat lukt niet.
Heeft iemand een tutorial of voorbeeld voor me, hoe je kan controleren of je met internet bent verbonden?
Gewijzigd op 28/01/2013 11:12:41 door - SanThe -
Nu kan ik daarin ook JavaScript gebruiken zonder Ajax/jQuery e.d.
Maar nu wil ik wel kunnen bekijken of er een update beschikbaar is, en om geen error te krijgen moet ik dus eerst de internet verbinding controleren.
Ik hoop dat het nu iets duidelijker is.
Hier uit. Ik heb er geen ervaring mee maar als ik het goed begreep staat in hoofdstuk 4 dat wat je zoekt.
Na wat gegoogle kwam ik - Mark - op 28/01/2013 11:21:45:
Na wat gegoogle kwam ik Hier uit. Ik heb er geen ervaring mee maar als ik het goed begreep staat in hoofdstuk 4 dat wat je zoekt.
Ik heb dit script geprobeerd (om te testen probeer ik het gewoon als .html op mijn bureaublad).
Nu krijg ik alleen altijd true als resultaat, ook als ik mijn wifi adapter heb uitgeschakeld.
Tom Tom op 28/01/2013 11:16:28:
... Nu kan ik daarin ook JavaScript gebruiken zonder Ajax/jQuery e.d. ...
Probeer me eens te overtuigen dat je Ajax niet kan gebruiken, terwijl je de rest van javascript wel kan gebruiken.
Staat er ergens in documentatie dat het niet kan?
Ik spreek niet over jQuery, he. Ajax zit in javascript, je hebt daar geen andere libraries/... voor nodig.
---
Een ander idee; zet ergens een <img> en kijk of die image laadt.
Indien ja: er is verbinding.
Ik zou je aanraden om eerst te testen met een gewone webpagina.
Kijk daarna of je er iets mee bent voor je Android ding.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
var xmlhttp;
var content = '';
if (typeof xmlhttp == 'undefined') {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function test_connectie() {
xmlhttp.open('get', 'test.php', true);
xmlhttp.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
xmlhttp.onreadystatechange=function() {
document.getElementById('message').innerHTML += 'state: ' + xmlhttp.readyState + ' status: ' + xmlhttp.status +'<br>';
}
xmlhttp.send(null);
}
</script>
<button onclick="test_connectie();">Klik</button>
<div id="message"></div>
var xmlhttp;
var content = '';
if (typeof xmlhttp == 'undefined') {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function test_connectie() {
xmlhttp.open('get', 'test.php', true);
xmlhttp.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
xmlhttp.onreadystatechange=function() {
document.getElementById('message').innerHTML += 'state: ' + xmlhttp.readyState + ' status: ' + xmlhttp.status +'<br>';
}
xmlhttp.send(null);
}
</script>
<button onclick="test_connectie();">Klik</button>
<div id="message"></div>
Probeer eerst eens uit met een 'test.php' bestand in de zelfde map.
Probeer dan eens uit of je 'test.php' kan vervangen door een url met "http://...".
Je zal moeten zien of dat geblokkeerd wordt op je machine.
Wanneer xmlhttp.readyState 4 is, moet je kijken naar xmlhttp.status
Als alles goed gaat, moet je xmlhttp.status = 200 krijgen.
Indien je geen 200 krijgt, heb je iets van errors. bv. een 404, page not found. Je vindt de lijst wel.
Kijk eens wat er gebeurt wanneer je de connectie verbreekt (modem uit zetten ...) en dan op de knop drukt.
Misschien komt het wel omdat ik de internet.html (met mijn code) op mijn bureaublad heb staan, en de test.php online: http://www.domein.nl/data.php?result
Nu krijg ik alleen altijd "state: 4 status: 0" terug, met of zonder internet verbinding.
Als ik verbinding heb krijg ik het alleen wel sneller terug dan wanneer ik geen verbinding heb.
Ik weet zeker dat ik geen verbinding heb, aangezien ik mijn wifi adapter heb uitgezet
Okay, plan B. Die met de image.
Images doen niet lastig.
Het is nogal quick & dirty; het kan zeker eleganter.
Maar ik denk wel dat je hiermee een antwoord krijgt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html>
<head>
<script>
function test_connectie() {
var imageObj = document.createElement("IMG");
var button = document.getElementById("button");
var test_div = document.getElementById('test');
var image_div = document.getElementById('image_div');
test_div.innerHTML = "Loading";
imageObj.setAttribute('src', 'http://www.w3schools.com/images/compatible_firefox.gif' + '?dummy=' + new Date().getTime() );
// add load event to new image
imageObj.addEventListener('load', (function(i) {
setTimeout(
function() {
testHeight(imageObj);
},
1000
);
test_div.innerHTML = "Loaded";
})(imageObj));
image_div.parentNode.insertBefore(imageObj, image_div);
}
function testHeight(image) {
var test_div = document.getElementById('test');
if(image.naturalHeight) {
test_div.innerHTML = 'er is connectie';
}
else {
test_div.innerHTML = 'er is geen connectie';
}
}
</script>
</head>
<body>
<div>
<button id="button" onclick="test_connectie();">Klik</button>
</div>
<div id="image_div"></div>
<div id="test"></div>
</body>
</html>
<head>
<script>
function test_connectie() {
var imageObj = document.createElement("IMG");
var button = document.getElementById("button");
var test_div = document.getElementById('test');
var image_div = document.getElementById('image_div');
test_div.innerHTML = "Loading";
imageObj.setAttribute('src', 'http://www.w3schools.com/images/compatible_firefox.gif' + '?dummy=' + new Date().getTime() );
// add load event to new image
imageObj.addEventListener('load', (function(i) {
setTimeout(
function() {
testHeight(imageObj);
},
1000
);
test_div.innerHTML = "Loaded";
})(imageObj));
image_div.parentNode.insertBefore(imageObj, image_div);
}
function testHeight(image) {
var test_div = document.getElementById('test');
if(image.naturalHeight) {
test_div.innerHTML = 'er is connectie';
}
else {
test_div.innerHTML = 'er is geen connectie';
}
}
</script>
</head>
<body>
<div>
<button id="button" onclick="test_connectie();">Klik</button>
</div>
<div id="image_div"></div>
<div id="test"></div>
</body>
</html>
Kris Peeters op 28/01/2013 16:29:55:
Hiermee is het wel gelukt!
Bedankt.