IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
PuGR
Člen
Avatar
PuGR:9.5.2022 14:34

Ahoj, zkouším na naše webovky vložit kód, který po kliknutí na příslušné tlačítko nastaví celý web na celou obrazovku. Na netu jsem našel nejpoužívanější variantu, která sice funguje, ale pouze do doby než překliknu na jakýkoliv odkaz. Používám stránky a šablony od shoptetu, ale je možné tam dodatečně přidat kód do head nebo body.. Při stisknutí F11 zůstane fullscreen funkční i při kliknutí na odkazy.. ale pomocí scriptu bohužel nedrží. Je zde někdo zkušený, kdo by mi mohl poradit čím by to mohlo být? Předpokládám, že se příkaz na fullscreen spustí jen na dané webové adrese a jakmile jí změním, tak se to vypne.. Jak tedy zachovat celou obrazovku globálně? Odkazy jsou v rámci jedné domény..
Děkuj za odpověď :)

Používám tento kód:

....
<button onclick="openFullscreen();">Fullscreen</button>
...
<script>
function openFullscreen() {
var elem = document.documentElement;
  if (!document.fullscreenElement) {elem.requestFullscreen();} else {if (document.exitFullscreen) {document.exitFullscreen();}}
}
</script>
 
Odpovědět
9.5.2022 14:34
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.5.2022 12:08

Asi by to slo ulozit do cookies a vyvolat automaticky na kazde dalsi strance.
Hadam, ze problem je v tom, ze ten stav je vyvolan pres js, nikoliv uzivatelem a browser to chape jako moznou podvrzenou akci od reklamniho robota. treba, jak je stranka s videem a misto play se ti zobrazi reklama a jeste full screen.
F11 je tlacitko pro full screen.

 
Nahoru Odpovědět
10.5.2022 12:08
Avatar
PuGR
Člen
Avatar
PuGR:10.5.2022 17:30

Díky moc za odpověď :)
A jak bych to mohl uložit do cookies? Nic podobného jsem ještě nedělal.. Taky si myslím, že by to mohl být jeden z důvodů.. Na druhou stranu jsem nikde nenašel, že by někdo řešil podobný problém. Potom by mohla být chyba v tom jak se stránky shoptetu načítají. A nějakým způsobem resetují všechny vyvolané akce. Ale netuším jak to obejít. Jedině vytvořit globální proměnnou, která bude buď true nebo false na základě stisknutí tlačítka fullscreen a pak script, který poběží neustále na pozadí a bude kontrolovat podmínku, zda je daná proměnná true.. takže vlastně obdoba cookies. Jsem ale v JS úplný začátečník a nevím jak podobné podmínky sepsat. Zkoušel jsem hledat nějaké návody, ale už mi to zabírá spoust času.. dělám to jen ve volnu jako koníček. Tak pokud někdo ví jak to vyřešit, určitě by mi to moc pomohlo :)

 
Nahoru Odpovědět
10.5.2022 17:30
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.5.2022 7:48

Zeptal ses googlu?
google = javascript cookies example
google = javascript localStorage example - to je modernejsi zpusob

Presne, jak rikas, vytvoris si tam promenou, nastavis true a pri zobrazeni stranky si zkotrolujes, zda je ci neni fullscreen uz fullscreen a zda to odpovida te promene.
Ale, je mozne, ze to jde jinak, ze je treba nejak prohlizeci rict, aby ten rezim nevypinal. Ja jsem spis programator amater, pokud se jedna o neco, co pred 20 lety neexistovalo a to je presne pripad toho fullscreenu.

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

localStorage.setItem('myCat', 'Tom');

const cat = localStorage.getItem('myCat');

localStorage.removeItem('myCat');

localStorage.clear();
 
Nahoru Odpovědět
11.5.2022 7:48
Avatar
PuGR
Člen
Avatar
PuGR:12.5.2022 21:03

Tak jsem to dnes zkoušel řešit a zatím bez úspěchu :(
Nejspíš špatně rozumím sepisování JS..
Zkouším následující kód, ale zdá se, že kontrolní podmínka co by měla běžet neustále a zkoumat, jestli je proměnná true nebo ne.. tak neběží..

<!DOCTYPE html>
<html>
<body>

<p><button onclick="klik()" type="button">Klikni!</button></p>
<p><button onclick="storno()" type="button">Stornuj me!</button></p>

<p>Hodnota promenne:</p>
<p id="demo"></p>

<script>
klik();

function klik() {
  if (sessionStorage.klik) {
    sessionStorage.klik = true;
  } else {
        sessionStorage.klik = false;
  }
  document.getElementById("demo").innerHTML = sessionStorage.klik;
}

function storno() {
  if (sessionStorage.klik) {
    sessionStorage.klik = false;
  }
  document.getElementById("demo").innerHTML = sessionStorage.klik;
}

  if (sessionStorage.klik = true) {
    if (!document.fullscreenElement) {
      document.documentElement.requestFullscreen();
    }
    if (sessionStorage.klik = false) {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      }
    }
  }
</script>

</body>
</html>

Nevíte někdo, kde dělám chybu? :)

 
Nahoru Odpovědět
12.5.2022 21:03
Avatar
PuGR
Člen
Avatar
PuGR:12.5.2022 21:11

Na konci jsem špatně uzávorkoval podmínku, ale stejně to nefunguje :(

...
  if (sessionStorage.klik = true) {
    if (!document.fullscreenElement) {
      document.documentElement.requestFullscreen();
    }
  }
    if (sessionStorage.klik = false) {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      }
    }
...
 
Nahoru Odpovědět
12.5.2022 21:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.5.2022 8:01

1)
https://developer.mozilla.org/…llscreen_API
https://developer.mozilla.org/…itFullscreen
https://developer.mozilla.org/…stFullscreen
Jestli spravne rozumim dokumentaci, tak...

document.fullscreenElement -- boolean promena, ktera rika, zda je fullscreen aktivni nebo ne (je pod nadpisem Properties)
elem.requestFullscreen() -- aktivuj FS (Methods on the Element interface)
document.exitFullscreen() -- zrus FS (Methods on the Document interface)

S tim, ze aktivace se musi volat na elementu, takze treba
let elem = document.documentElement;
let elem = document.querySelector("video");

A exit se vola z document.

if (document.exitFullscreen) -- to je dotaz, zda existuje funkce document.exitFullscreen, to je mozna zbytecne ve tvem kodu

Je tam krasny priklad, pod nadpisem "Toggling fullscreen mode" https://developer.mozilla.org/…llscreen_API

  1. A druhy problem, ktery tam mas, ze funkce klik a storno sice prepinaji hodnotu v session, ale nevolaji funkci pro prepnuti modu fullscreen a zpet.
function klik() {...; fullScreen();}
function storno() {...; fullScreen();}
function fullScreen() {...}

fullScreen(); // a soucasne je treba zavolat full screen po nacteni stranky, to tam jakoze mas

Ale, po kliknuti na button se stranka nenacita, jen pri kliknuti na odkaz, takze muzes klikat na butony, jak chces, kdyz delaji jen kliknuto = true / kliknuto = false; vypisKliknuto­NaObrazovku() :)

 
Nahoru Odpovědět
13.5.2022 8:01
Avatar
PuGR
Člen
Avatar
PuGR:14.5.2022 9:31

Tohle jsem tak nějak pochopil, doufám :)
Problém je, že asi nerozumím krokům, jak se kód na stránkách čte.. Funguje to tak, že se načte stránka, přečte celý kód a vykoná se jednorázově? A jediné co běží na "pozadí" je kontrola stisku buttonu, který vyvolá další případné funkce?

Takže následující část kódu se přečte a vykoná pouze jednou při načtení stránky? Protože můj záměr byl, že se čte neustále a podle toho jak se mění proměnná sessionStorage.klik se vykoná ten či onen kód..

...
  if (sessionStorage.klik = true) {
    if (!document.fullscreenElement) {
      document.documentElement.requestFullscreen();
    }
  }
    if (sessionStorage.klik = false) {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      }
    }
...

Pokud se to tedy přečte pouze jednou, pak chápu, že to nefunguje..
Proto jsem zkoušel najít funkci, která bude čtení kódu opakovat a zkusil jsem něco takového:

<!DOCTYPE html>
<html>
<body>

<p><button onclick="klik()" type="button">Klikni!</button></p>
<p><button onclick="storno()" type="button">Stornuj me!</button></p>

<p>Hodnota promenne:</p>
<p id="demo"></p>

<script>
sessionStorage.klik = false;
document.getElementById("demo").innerHTML = sessionStorage.klik;
setInterval(fullScreen, 5000);

function klik() {
  if (sessionStorage.klik) {
    sessionStorage.klik = true;
  }
  document.getElementById("demo").innerHTML = sessionStorage.klik;
}

function storno() {
  sessionStorage.klik = false;
  document.getElementById("demo").innerHTML = sessionStorage.klik;

}

function fullScreen() {
  if (sessionStorage.klik = true) {
    if (!document.fullscreenElement) {
      document.documentElement.requestFullscreen();
    }
  }
  if (sessionStorage.klik = false) {
    if (document.exitFullscreen) {
      document.exitFullscreen();
    }
  }
}
</script>

</body>
</html>

Pseudokódem jsem chtěl docílit následujícího postupu..
Při načtení stránky:

  1. definuj proměnnou sessionStorage.klik = false
  2. zobraz hodnotu této proměnné
  3. spusť opakující se interval každých 5 vteřin a spusť funkci fullScreen()
  4. tato funkce kontroluje jestli je proměnná sessionStorage.klik true nebo false a podle toho zapne nebo vypne fullscreen..
  5. jsou přítomné další dvě funkce, které spouští buttony a to funkce klik() a storno()
  6. při kliknutí na kterýkoliv button se změní hodnota proměnné sessionStorage.klik a vzhledem k tomu, že mám stále spuštěný interval každých 5 vteřin zapnout funkci fullScreen(), tak by měl podle toho zapnout nebo vypnout fullscreen..

Bohužel to nefunguje.. při různých experimentech jsem dospěl k názoru, že i přesto, že při kliknutí na tlačítko storno se funkce sessionStorage.klik nastaví na false, tak funkce pro zrušení fullscreenu se spustí jen když je true.. i když v podmínce je :

...
if (sessionStorage.klik = false) {
    if (document.exitFullscreen) {
      document.exitFullscreen();
    }
  }
...

Proto mi přišlo, že stisknutím buttonu storno sice nastaví proměnnou sessionStorage.klik = false, ale až na konci celého kódu/relace.. tudíž kontrola jestli je již proměnná sessionStorage.klik = false je v daný moment ještě true.. Proto si nejsem jistý časováním částí kódu a tak nejsem schopný ani přijít na to, proč to nefunguje i přesto že pseudokódem to dává smysl :)

 
Nahoru Odpovědět
14.5.2022 9:31
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.5.2022 12:03

Zaklady programovani?
Kod se cte radek po radku.
a, b, c, ...
Kod, ktery obalis funkci se jen uklada do pameti
function aaa(xxx) {neco delej}
Aby se kod vykonal, musis funkci zavolat.
aaa(123)

Kod, ktery napises do tagu script bez obaleni do funkce se obvykle ihned vykonava v miste, kde je napsany.
`<div id=xxx></div> <script>neco proved z divem xxx</script>
<script>neco proved z divem xxx - ale, div neexistuje</script> <div id=xxx></div>`
Druhy priklad tedy skonci errorem v konzoli.
Takze, idealni je, vsechny scripty umistit pred uzaviraci tag /body. Nebo do oteviraci do parametru onload="...". Nebo do scriptu window.onload="..."

Na pozadi bezi casovace (setTimout, interval), sledovace udalosti (onload body onload, img onload, iframe onload, request onload, file onload), eventy.
kdyz nastane udalost mysi, se zjisti, co vse v okoli muze byt aktivovano a to vse zpusobi event onclick, treba. Je to serie funkci, ktere jdou v poradi a je mozne tu serii prerusit (event prevent, stop propagation).
Nebo, kdyz das do stranky iframe nebo obrazek, tak se spusti event pro stahovani souboru. To muze nejaky casek zabrat. Bezi to na pozadi a dal se vykonava html, js kod mezitim. Pokud chces vedet, ze to skoncilo, musis na to navazat call back, funkci, ktera se zavola po skonceni.

<img src=... onload="skonciloStahovani(this)">
<script>
function skonciloStahovani(obrazekElement) {alert('skoncilo stahovani souboru z url'+obrazekElement.src)}

function stahovaniSouboruKonec() {...}
function stahovaniSouboruError() {...}
request.post(url, asyn=true, stahovaniSouboruKonec, stahovaniSouboruError)
//nejaky dalsi kod, ktery se vykona driv nez bude dokonceno stahovani

Cili, pri nacteni stranky se vykona kod, ktery je v tagu script a neni ve funkci. Pokud chces pouzit i funkci, musis ji extra zavolat

function klik() {...; fullScreen();} // tohle se pri nacteni stranky nevykona
function storno() {...; fullScreen();} // nevykona
function fullScreen() {...} // nevykona

alert(123) // vykona
fullScreen(); // vykona, spusti obsah funkce
---

function klik() {...;}
fullScreen();
// <tag onclick=klik()>
// klik provede jen to, co je v kliku napsane. Nic vic.
// full screen bylo pouzito jen pri nacteni stranky, spustilo se 1x, neni provazane na nic dalsiho
// je tedy blahove ocekavat, ze se vykona jako samo bez dovoleni

A pak mas funkce jako setInterval, setTimeout. Intervalem je mozne spustit funkci podle uplynuteho casu, treba jednou za sekundu. Pouziva se to k odpocitavani casu, treba. Nebo zobrazovani hodin. Nebo pohybu pismenek po obrazovce, strely a tak.
V jinych jazycich existuje neco jako funkce pause. ta zastavi vykonavani kodu na nejaky cas. Je to neco jako settimetout. Ten spusti funkci po uplynuti casu. Rozdil mezi tim je:

timer = setInterval(zobrazCas, 1000) // +1s, +1s, ... do zastaveni casovani js prikazem
timer = setTimeout(zobrazCas, 1000); setTimeout(zobrazCas, 2000); setTimeout(zobrazCas, 3000)
// okamzite se spusti 3 casovace, jeden aktivuje funkci v case 1s, druhy 2s, treti 3s a pak uz nic
// (treba posunes rucicku hodin o +1, +1, +1, ale, pak se to zastavi)
// takto treba funguje stahovani souboru, otevre se treba 10 najednou a postupne se stahuji
zobrazCas(); pause(1000); zobrazCas(); pause(1000); zobrazCas(); pause(1000);
// rozdil je v tom, ze pri pause obvykle v tech druhych jazycich je program trvale zastaveny. Neni mozne na nic klikat a tak.
 
Nahoru Odpovědět
15.5.2022 12:03
Avatar
PuGR
Člen
Avatar
PuGR:15.5.2022 20:27

Děkuji ještě jednou za vyčerpávající odpověď :)
Myslím, že většinu těchto poznatků znám a tak nějak chápu.. ale i přesto netuším co dělám špatně že to nepracuje tak jak bych chtěl.
Sepsal jsem po lopatě následující kód s poznámkami jak si myslím, že by to mělo fungovat, je to tak správně?

<!DOCTYPE html>
<html>
<body>

<p><button onclick="klikk()" type="button">Klikni!</button></p>
<p><button onclick="storno()" type="button">Stornuj me!</button></p>

<p>Hodnota promenne:</p>
<p id="demo"></p>

<script>
// nastavi pri nacteni stranky jednorazove promennou klik na false
sessionStorage.klik = false;
// zobrazi nastavenou hodnotu false, abych videl ze vse funguje
document.getElementById("demo").innerHTML = sessionStorage.klik;
// nastavi spousteni funkce fullScreen kazdych 5 vterin
setInterval(fullScreen, 5000);

// nadefinuje funkce klik() a storno() pro jejich pozdejsi spusteni pri stisknuti prislusneho buttonu
function klikk() {
  if (sessionStorage.klik) {
        // nastavi promennou klik na true
    sessionStorage.klik = true;
  }
  // nasledne zobrazi nastavenou promennou abych videl, ze se zmenila
  document.getElementById("demo").innerHTML = sessionStorage.klik;
}

function storno() {
  sessionStorage.klik = false;
  document.getElementById("demo").innerHTML = sessionStorage.klik;

}

// tuto funkci fullScreen vyvolávám každých 5 vteřin viz na začátku funkce setInterval()
function fullScreen() {
        // pokud je promenna klik true, tak nastavi webovou stranku na celou obrazovku pokud tak jiz neni nastaveno
  if (sessionStorage.klik = true) {
    if (!document.fullscreenElement) {
      document.documentElement.requestFullscreen();
    }
  } else {
        // pokud je promenna klik false, tak spusti vypnuti cele obrazovky.. predpokladam ze je jedno, jestli je cela obrazovka aktivni nebo ne
    if (document.exitFullscreen) {
      document.exitFullscreen();
    }
  }
}
</script>

</body>
</html>

Jednoduše chci, aby se nadefinovali funkce klik() a storno() a pak funkce fullScreen().. Při stisku příslušného buttonu se proměnná sessionStorage.klik nastavi na true nebo false.. a jelikož každých 5 vteřin spouštím funkci fullScreen(), tak by se měla spustit celá obrazovka pokud je promenna sessionStorage.klik true a nebo vypnout pokud je false..

Pokud mám zápis správně, tak by to mělo fungovat ne? :)
Když to však zkusím spustit.. tak se mi samozřejmě na začátku nadefinuje proměnná sessionStorage.klik na false.. a jak uběhne 5 sekundový interval, tak i přesto, že je false tak se zapne celá obrazovka.. a neustále se zapíná vždy po uplynutí intervalu.. pokud kliknu na button storno, který má spustit funkci storno() a nastavit sessionStorage.klik na false, i když jsem jí třeba předtím nastavil na true, tak se celá obrazovka samovolně po uplynutí intervalu nevypne..

Rozumím, že když stisknu button, tak bych měl rovnou volat funkci fullScreen, ale takle to nechci.. protože právě už v prvním příspěvku jsem psal, že na stránkách se sice celá obrazovka zapne, ale jakmile překliknu na nějaký odkaz, tak se sama vypne.. Proto se to snažím obejít tím, že budu v nějakém intervalu kontrolovat funkci sessionStorage.klik jestli je true nebo false a podle toho se ta obrazovka zapne nebo vypne... z toho důvodu tuto proměnnou chci uložit jako globální a na Tvou radu jí ukládat do cookies :)

Ale nejspíš pořád někde dělám chybu a nemůžu na to přijít :D Ale moc si vážím toho, že mi věnuješ tolik času :)

 
Nahoru Odpovědět
15.5.2022 20:27
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.5.2022 8:39

Dobra, takze nazornou ukazku s tvym kodem a uvidime, co najdu.
Validator html kodu https://validator.w3.org/#…
Button tag je odesilaci tlacitko. Kdyz ho kliknes, ihned nacita novou stranku.
ctrl+shift+j (webdeveloper - chybova konzola)
JS konzola mi vypisuje, ze odmita sputit full screen, pokud neni vyvolan uzivatelem.

<!DOCTYPE html>
<html>
<body>

<!--p><button onclick="klikk()" type="button">Klikni!</button></p>
<p><button onclick="storno()" type="button">Stornuj me!</button></p>
<p>Hodnota promenne:</p>
<p id="demo"></p-->

<p><input type="button" onclick="klikk()" value="Klikni!"></p>
<p><input type="button" onclick="storno()" value="Stornuj me!"></p>
<pre id="log"></pre>

<script>
function vypis(str) {var el = document.getElementById("log"); el.innerHTML += str+"\n";}// + el.innerHTML;}

// nastavi pri nacteni stranky jednorazove promennou klik na false

// nadefinuje funkce klik() a storno() pro jejich pozdejsi spusteni pri stisknuti prislusneho buttonu
function klikk() {
//  if (sessionStorage.klik) {  // neodpovida dokumentaci pro sessionStorage! https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
// a proc to chces nastavovat true, kdyz uz to true je?

        // nastavi promennou klik na true
//    sessionStorage.klik = true; //neodpovida dokumentaci pro sessionStorage!
sessionStorage.setItem("klik", true);
//  }
  // nasledne zobrazi nastavenou promennou abych videl, ze se zmenila
//  document.getElementById("demo").innerHTML = sessionStorage.klik;
  vypis('klikk, session = ' + sessionStorage.getItem("klik"));
}

function storno() {
//  sessionStorage.klik = false;
sessionStorage.setItem("klik", false);

//  document.getElementById("demo").innerHTML = sessionStorage.klik;
  vypis('storno, session = ' + sessionStorage.getItem("klik"));
}

// tuto funkci fullScreen vyvolávám každých 5 vteřin viz na začátku funkce setInterval()
function fullScreen() {
  vypis('FS, function run');
        // pokud je promenna klik true, tak nastavi webovou stranku na celou obrazovku pokud tak jiz neni nastaveno
//  if (sessionStorage.klik == true) { // ??? dve rovnitka!, a neodpovida dokumentaci pro sessionStorage!
  vypis('FS, session is ' + sessionStorage.getItem("klik"));

//console.log(JSON.stringify( sessionStorage.getItem("klik") ))
if (sessionStorage.getItem("klik")=='true')
{
  vypis('FS, session is true');
console.log(document.fullscreenElement)
//    if (!document.fullscreenElement) {
//      document.documentElement.requestFullscreen();
      if (document.fullscreenElement!=true) { // je to null
        document.documentElement.requestFullscreen();

  vypis('FS, fullscreen go ON');
    }
  } else {
  vypis('FS, session is false');
        // pokud je promenna klik false, tak spusti vypnuti cele obrazovky.. predpokladam ze je jedno, jestli je cela obrazovka aktivni nebo ne
//    if (document.exitFullscreen) {
//  vypis('FS, function exist(document.exitFullscreen)==true');
//      document.exitFullscreen(); // tady to pise error, ze chces ukoncit FS, kdyz nejsi ve FS

      if (document.fullscreenElement==true) {
        if (document.exitFullscreen) {
  vypis('FS, fullscreen go OFF');
           document.exitFullscreen();
    }}
  }
}

sessionStorage.klik = false;
  vypis('start, session = ' + sessionStorage.getItem("klik"));
// zobrazi nastavenou hodnotu false, abych videl ze vse funguje
//document.getElementById("demo").innerHTML = sessionStorage.klik;
// nastavi spousteni funkce fullScreen kazdych 5 vterin
setInterval(fullScreen, 5000);
fullScreen()

</script>

</body>
</html>
 
Nahoru Odpovědět
16.5.2022 8:39
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.5.2022 8:44

Nejvetsi zaludnost byla v tom radku porovnani a s tim error radkem to take nemuselo jet.
if (sessionStorage.getItem("klik")=='true')
Ale, nejsem si uplne jisty, proc? Proc se neulozil boolean true? Proc se to ulozilo jako string 'true'? A mozna by stalo za to zjistit, zda se ulozil false jako 'false' nebo prazdny string '' ?

Editováno 16.5.2022 8:45
 
Nahoru Odpovědět
16.5.2022 8:44
Avatar
PuGR
Člen
Avatar
PuGR:16.5.2022 17:37

Zatím jsem si jen letmo projel, co jsi mi psal.. až budu mít víc času, tak to projedu podrobně a dám vědět :)
Každopádně ten zápis do session jsem čerpal odsud, kde je úplně dole příklad.. Používají to úplně stejně na počet kliků..
Přišlo mi to jako jednodušší zápis než to co popisují nahoře stejně jako ty..
https://www.w3schools.com/…lstorage.asp

 
Nahoru Odpovědět
16.5.2022 17:37
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.5.2022 7:54

Pozor, w3school jsou soukrome stranky, ktere napatri zadnemu vyrobci browseru, ani nespadaji pod organizaci w3c. Me zkusenosti jsou spis negativni. 90% veci treba bude fungovat, ale ten zbytek maji spatne.

if (localStorage.clickcount) {
  localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
  localStorage.clickcount = 1;
}

Jestli myslis tento priklad, tak ten dela uplne neco jineho. Aspon si mysli, ze to dela neco jineho.

// tohle je obdobny kod
x = {}; // nebo localStorage = {};
x.setItem = function (name, value) {...}
x.getItem = function (name) {...}
x.cokoliv = neco // cokoliv je cokoliv jineho nez setItem getItem

Timto zpusobem si muzes ukladat do kazdeho existujiciho objektu. Ale, po opusteni stranky se to ztrati, protoze to neni v definici te funkce.

Nahore mas priklad pouziti storage, ktere by melo fungovat vzdy. Protoze to odpovida zapisum z dokumentace k prohlizeci Firefox. Pro IE by ses musel podivat na ms stranky. Pro chrome na chrome stranky... Teoreticky to maji vsichni stejne. Tak ze 70% nee :)
https://developer.mozilla.org/…localStorage

localStorage.setItem("lastname", "Smith");
localStorage.getItem("lastname");
 
Nahoru Odpovědět
17.5.2022 7:54
Avatar
Tomáš
Člen
Avatar
Tomáš:12.7.2022 14:10

Problém je, že některé prohlížeče ti neumožní jednoduše přepnout do fullscreenu. Můžeš přepnout do fullscreenu jen tehdy, pokud uživatel provedl nějakou akci na stránce (kliknul myší nebo stisknul nějakou klávesu). Není to jen u fullscreenu, ale například i u audia. Takže pokud chceš dát stránku do fullscreenu, tak ti interval nepomůže, ale musíš to udělat nějak takto:

<script>
function click(){ // Metoda vyvolaná tlačítkem/kliknutím myši/stisknutím klávesy
        fullscreen(); // Metoda, která ti dá dokument/element do fullscreenu
}
</script>

Odkaz tě redirectne na novou stránku, kde musíš fullscreen znovu vyvolat (kliknutí,...).

Já jsem s tím měl občas také problém, tak můžeš vyzkoušet ještě jedno řešení: Můžeš si vytvořit novou stránku (např. fullscreen.html). Do této stránky dáš <iframe src="https://­example.com/stran­ka"></iframe> a <button onclick="fullscre­en()">Fullscre­en</button>. Iframe nastyluješ, aby byl přes celou stránku, popřípadě skryješ scrollbary, atd. Po kliknutí na tlačítko se dá do fullscreenu fullscreen.html. Pokud uživatel klikne na odkaz v https://example.com/stranka, tak ho to redirectne uvnitř iframu, ale fullscreen.html by měl stále zůstat ve fullscreenu.

Pokud budeš chtít, tak můžeš udělat něco jako "povolte cookies" a po kliknutí na tlačítko "povolit" nebo "zrušit" se dá stránka do fullscreenu.

 
Nahoru Odpovědět
12.7.2022 14:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.