Avatar billede sth Novice
24. november 2006 - 09:10 Der er 28 kommentarer og
1 løsning

Har bruger afgang til internettet ?

jeg ahr brug for at teste om en bruger på vores intranet har adgang til internettet..

altså hvis der er adgang til nettet så vis noget ehvis ikke så vis noget andet, noget i stil med
<%
if adgang til internet så
%>
<!--#include file="google/google.asp"-->

<%
else
end if
%>
nogen der kan lave dette i javascript
har prøvet med en del i asp men fortæller jo kun om serveren har adgang og ikke om brugeren har
Avatar billede fennec Nybegynder
24. november 2006 - 09:38 #1
Har smidt et script i dit gamle ?:
http://www.eksperten.dk/spm/746651

Men det kommer her også:
<body onload="tjeckForWeb()">
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
var xmlHttp

function tjeckForWeb()
{
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
        alert ("Browser does not support HTTP Request")
        return
    }
    var url="http://www.google.dk/"
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
    window.setTimeout("hasWeb()",2000)
}

function hasWeb()
{
    if(xmlHttp.responseText != "")
        alert("Is Online")
    else
        alert("Is Offline")
}

function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}


//-->
</SCRIPT>

</body>
Avatar billede fennec Nybegynder
24. november 2006 - 09:40 #2
Det aller første du gør er at sende folk ind på denne side. I stedet for alert() laver du så en redirect til "isOnline.asp" eller "isOffline":

function hasWeb()
{
    if(xmlHttp.responseText != "")
        location = "isOnline.asp"
    else
        location = "isOffine.asp"
}
Avatar billede sth Novice
24. november 2006 - 13:34 #3
ja det ser ud til at det vil virke, kommer du lige med et svar
Avatar billede fennec Nybegynder
24. november 2006 - 13:41 #4
.o) <-- One Eyed Jack
Avatar billede olebole Juniormester
24. november 2006 - 14:20 #5
<ole>

Er det ikke mere logisk at checke på XMLHttpRequest-objektets status-property? Den er jo beregnet til den slags  :)

/mvh
</bole>
Avatar billede fennec Nybegynder
27. november 2006 - 09:47 #6
OleBole >>
Den har jeg ikke hørt om før. Har du et link til beskrivelse af den, for indtil vidre har jeg fremtvunget 0, 200 og 12007 som værdi, og vil da gerne vide hvad de betyder :o)

0 må være AJAX ikke accepteret
200 må være et OK signal
12007 må være offline/ikke fundet

Men jeg vil gerne have den rigtige betydning.
Avatar billede olebole Juniormester
27. november 2006 - 10:23 #7
Avatar billede fennec Nybegynder
27. november 2006 - 10:40 #8
0 er heller ikke på listen :(
Avatar billede fennec Nybegynder
27. november 2006 - 10:41 #9
Man vi kan da ændre:
if(xmlHttp.responseText != "")

til:
if(xmlHttp.status == 200)
Avatar billede olebole Juniormester
27. november 2006 - 11:13 #10
yups  ;o)
Avatar billede fennec Nybegynder
27. november 2006 - 11:58 #11
Den vil dog stadig ikke finde google.com. Der får den bare et 0 tilbage, så det er nok stadig bedst at tjekke på kundens egen hjemmeside i stedet for google.
Avatar billede fennec Nybegynder
27. november 2006 - 12:01 #12
OleBole >>
Prøv selv med:
var url="http://www.dfkvfdkjdfvdvfdvtgf.com/"

Så får jeg en status 12007. Jeg får dog nogle gange en JS fejl i stedet.
Avatar billede olebole Juniormester
27. november 2006 - 13:05 #13
Du kan vel bare teste på et kendt billede, der sandsynligvis er online:

<script type="text/JavaScript">
var o = new Image();
o.onerror = function(){alert("nope")};
o.src = "http://www.eksperten.dk/img/elogo.png";
</script>

- om så et billede på Eksperten kan siges at være 'sandsynligvis online' ... tjaaahhhh  ;oD
Avatar billede olebole Juniormester
27. november 2006 - 13:06 #14
- og onload vil teste, om brugeren er online (onerror tester for, om brugeren er offline)
Avatar billede fennec Nybegynder
27. november 2006 - 13:23 #15
Vil det ikke fungere på samme måde som thesurfer's tjek fra forige ? (sidste kommentar):
http://www.eksperten.dk/spm/746651

Hvilket betyder at der går ca 20 sek inden tjekket er fuldført for offline personer?
Avatar billede olebole Juniormester
27. november 2006 - 13:30 #16
Hvorfor bruge lang tid på at vente på mit svar, når det tager ca. 20 sekunder at teste, selv?  ;o)
Avatar billede olebole Juniormester
27. november 2006 - 13:31 #17
- og svaret er: Nej  =)
Avatar billede fennec Nybegynder
27. november 2006 - 14:04 #18
Doh. Fordi jeg er dum :o)

Helt ærlig. "Test det selv" hvor indlysende er det svar lige... Det er jo bare at klippe koden, også havde jeg selv fundet ud af at du har ret. Hvilket jeg har testet nu.
Avatar billede olebole Juniormester
27. november 2006 - 14:38 #19
Hehe ... du har zq nok for travlt med at få 'afgang' på internettet (tjek overskriften på spm'et) ... slemme knajt!  ;D
Avatar billede sth Novice
27. november 2006 - 15:59 #20
Hmmmm je har lige tabt mig jeg er ikke med, bør jeg bruge en anden kode end:

<body onload="tjeckForWeb()">
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
var xmlHttp

function tjeckForWeb()
{
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
        alert ("Browser does not support HTTP Request")
        return
    }
    var url="http://www.google.dk/"
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
    window.setTimeout("hasWeb()",2000)
}

function hasWeb()
{
    if(xmlHttp.responseText != "")
        location = "isOnline.asp"
    else
        location = "isOffine.asp"
}
function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}


//-->
</SCRIPT>

</body>
Avatar billede fennec Nybegynder
27. november 2006 - 16:35 #21
Den kan godt bruges, men denne virker også (OleBole's kode):
<body>
<script type="text/JavaScript">
var o = new Image();
o.onerror = function(){alert("ofline")};
o.onload = function(){alert("online")};
o.src = "http://www.eksperten.dk/img/elogo.png";
</script>
</body>
Avatar billede olebole Juniormester
28. november 2006 - 09:57 #22
- og billedversionen holder også i lidt ældre (f.eks. Opera-) browsere, der ikke understøtter XMLHttpRequests ... dog ikke for at pushe min egen  =)
Avatar billede sth Novice
30. november 2006 - 13:45 #23
hvordan laver jeg det så jeg får sendt brugeren til en side hvis han er online og en anden side hvis han er offline
Avatar billede sth Novice
30. november 2006 - 13:47 #24
ok prøvede mig frem og mener at dette virker.
<BODY>
<script type="text/JavaScript">
var o = new Image();
o.onerror = function(){location = "isoffline.asp"};
o.onload = function(){location = "isonline.asp"};
o.src = "http://www.eksperten.dk/img/elogo.png";
</script>
</BODY>
</HTML>
Det kunne se ud til at det er noget hurtigere at bruge denne isteedet for XMLHttpRequests
Avatar billede thesurfer Nybegynder
05. februar 2007 - 11:42 #25
olebole> Nu blev jeg lidt nysgerrig..

Hvad er forskellen, på at indlejret JS-koden i HTML koden, og at lave det hele i JS?


Med andre ord:

<img src="http://www.google.dk/images/firefox/fox1.gif" onError="alert('Ingen internet-forbindelse')" onLoad="alert('Der er internet-forbindelse');">


vs


<body>
<script type="text/JavaScript">
var o = new Image();
o.onerror = function(){alert("ofline")};
o.onload = function(){alert("online")};
o.src = "http://www.eksperten.dk/img/elogo.png";
</script>
</body>
Avatar billede olebole Juniormester
06. februar 2007 - 14:13 #26
thesurfer >> Det er der principielt ingen forskel på. Oplever du alligevel en forskel (jeg har ikke testet dit eksempel), kan det vist kun skyldes, at event-handlers altid bør staves med småt  :)
Avatar billede olebole Juniormester
06. februar 2007 - 14:15 #27
- og så er der den forskel, at JS-versionen ikke indskriver billedet, så det forbliver usynligt - uden det behøver at være en transparent gif  ;o)
Avatar billede thesurfer Nybegynder
06. februar 2007 - 20:25 #28
Transparent gif? Man kan da bare smide det i et usynligt div.. eller sætte bredden og højden til 0 eller et andent meget lavt tal.. mulighederne er uendelige..! :-)

Nah.. dit eksempel kan vel også bruges.. :-)

Tsk for svaret. :-)
Avatar billede olebole Juniormester
08. februar 2007 - 15:32 #29
Heldigvis er der masser af forskellige muligheder. Om man vælger den ene eller den anden, kan ofte være ligemeget - men script/DOM-versionen passer perfekt til mine personlige kodevaner.
Jeg kan godt lide at have al funktionalitet samlet i scripts, men det er såmænd ikke mere korrekt end at lægge noget af funktionaliteten bundet til HTML-elementer  ;o)

- og selvtak  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester