Autor Zpráva
mackopu
Profil
Existuje nějaký způsob, jak pomocí javascriptu zjistit, zda je prohlížeč v režimu on-line?

Možné použití: Představme si CD s nabídkou nějakého produktu, která je zobrazována v prohlížeči. V případě, že je uživatel off-line, bude vyzván k připojení, v opačném případě se zobrazí formulář k odeslání objednávky.
Kalby
Profil
Nechapu pojem prohlizec online. Spis zda je uzivatel pripojen k internetu ne? Mozna by to slo napriklad tak, ze bys zkusil otevrit nejaky soubor z internetove adresy a pri chybe by byl nejspis uzivatel offline
Měsíček
Profil
Reaguji na mackopu:

Třeba takhle:
<script type="text/javascript">
  alert("Jsi v režimu "+(navigator.onLine ? "online." : "offline."));
</script>
Bubák
Profil
Měsíček
Pokud bude uživatel offline, ale nenastaví si ručně do režimu prohlížení offline prohlížeč, tak uvedený skript nic nepozná.
Měsíček
Profil
Reaguji na Bubáka:

"Pokud bude uživatel offline, ale nenastaví si ručně do režimu prohlížení offline prohlížeč, tak uvedený skript nic nepozná."

Samozřejmě, ovšem tohle taky není účel, cituji: "Existuje nějaký způsob, jak pomocí javascriptu zjistit, zda je prohlížeč v režimu on-line?", takže asi tak.
mackopu
Profil
Kalby
Jistě, tak bych si to představoval, jen nevím, jak pomocí javascriptu otevřít nějaký soubor na internetu a zpracovat tu chybu. To vše zvládám v PHP, v javascriptu ne.

Měsíček
To by mohlo být ono. Jen předpokládám, že pokud je prohlížeč v režimu on-line, tak je uživatel i fakticky připojen k internetu. Nebo ne?
Měsíček
Profil
Reaguji na mackopu:

"Jistě, tak bych si to představoval, jen nevím, jak pomocí javascriptu otevřít nějaký soubor na internetu a zpracovat tu chybu. To vše zvládám v PHP, v javascriptu ne. "

Příště si rozmysli co napíšeš. Ve svém prvním příspěvku jsi napsal naprosto něco jiného od toho co chceš teď.

"To by mohlo být ono. Jen předpokládám, že pokud je prohlížeč v režimu on-line, tak je uživatel i fakticky připojen k internetu. Nebo ne?"

Ne.
mackopu
Profil
Tedy to upřesním, protože původní dotaz mohl být opravdu zavádějící.

Existuje nějaký způsob, jak pomocí javascriptu zjistit, zda je uživatel, který si prohlíží stránku, nacházející se na lokálním počítači, momentálně připojen k internetu?
Měsíček
Profil
Reaguji na mackopu:

"Existuje nějaký způsob, jak pomocí javascriptu zjistit, zda je uživatel, který si prohlíží stránku, nacházející se na lokálním počítači, momentálně připojen k internetu?"

Ne.
mackopu
Profil
Nic ve zlém, ale což takhle AJAX? Ten přece pracuje se soubory...

Nerad se té myšlenky vzdávám.
Měsíček
Profil
Reaguji na mackopu:

"Nic ve zlém, ale což takhle AJAX? Ten přece pracuje se soubory."

Nad tím jsem taky přemýšlel, ale to by se "stránka" nesměla "náchazet na lokálním počítači". AJAX dokáže vzít data pouze ze své domény (tedy z localhostu a nebo z domény kde je skript uložen) .. pomocí AJAXu si nemůžeš vzít data z jiné domény než na které je skript uložen. Je mi líto, ale tudy cesta nepovede.
Chamurappi
Profil
Reaguji na mackopu:
což takhle AJAX? Ten přece pracuje se soubory...
AJAX tě nevpustí do jiné domény, natož do jiné zóny.

Existuje nějaký způsob, jak pomocí javascriptu […]
Vlastně ano. Můžeš velmi snadno udělat přesně to, co potřebuješ. Připoj k té své stránce načítané lokálně externí skript umístěný někde na webu.
_es
Profil
Ak ide o CD katalóg firmy, môže sa pokúsiť stiahnuť nejaký menší obrázok z firemného webu a overiť či sa stiahol.
Alebo to môže ísť overiť externým javascriptovým súborom na firemnej stránke.
mackopu
Profil
Měsíček, Chamurappi

To jsem teda blázen. Použil jsem kus kódu, který používám v jiné aplikaci a funguje to, ačkoliv sahám do úplně jiné domény:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">;
  <title></title>
<script type='text/javascript'>
var req;

function IsOnline(url) {
  if(window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if(window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  req.open("GET", url, true);
  req.onreadystatechange = callback;
  req.send(null);
}

function callback() {        
  if(req.readyState == 4) {
    if(req.status == 200) {
      alert("Jsi on-line");
    } else {
      alert("Jsi off-line");
    }
  }
}
</script>
  </head>
  <body>

<script type='text/javascript'>
IsOnline('http://seznam.cz'); // možno libovolně změnit za cokoliv existujícího, třeba soubor s formulářem objednávky
</script>

  </body>
</html>

Že by to nebyl AJAX?

Můžeš velmi snadno udělat přesně to, co potřebuješ. Připoj k té své stránce načítané lokálně externí skript z umístěný někde na webu.
To zní zajímavě. Mohl bys naznačit něco konkrétnějšího?
Měsíček
Profil
Reaguji na mackopu:

"To zní zajímavě. Mohl bys naznačit něco konkrétnějšího?"

Jestli jsem Chamurappiho pochopil tak možná to myslel takhle:
<!-- Obsah souboru "test_script.js" bude jen [var test_var = 6;]. -->

<script src="http://domena/test_script.js" type="text/javascript"></script>

<script type="text/javascript">
  alert("Jsi "+((test_var==6)?"online":"offline"));
</script>
Co se týče toho AJAXu vysvětlím potom nebo někdo jiný.
Bubák
Profil
Použil jsem kus kódu, který používám v jiné aplikaci a funguje to...“ ...jen v IE.
Chamurappi
Profil
Reaguji na mackopu:
Ve stránce budeš mít:
<form name="formulář" class="offline">
  …
</form>
<script src="http://www.example.com/skript-pro-cd.js"></script>

Do „www.example.com/skript-pro-cd.js“ dáš:
document.formulář.className = "online";

A v CSS pak nastyluješ obsah formuláře tak, aby různé části byly/nebyly viditelné podle třídy. Třeba.
mackopu
Profil
No vidíte, kluci, pak že to nepůjde. Jedno řešení hezčí než druhé :-)
_es
Profil
Ten script je navyše možné využiť na rôzne ďalšie veci.
Napríklad pri starom katalógu by sa mohlo vypísať, že je katalóg už neaktuálny a odkázať na aktuálny.
Leo
Profil
On je ovsem problem v tom, ze vychozi nastaveni IE je takove, ze se lokalni javascript (ze souboru pres file:) nespusti vubec, takze nemate co a cim detekovat... Leo
peta
Profil
1. <img src="http://..." onerror="funkce()">
2. google try catch javascript

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: