Avatar billede mik789 Nybegynder
14. oktober 2002 - 18:18 Der er 21 kommentarer og
2 løsninger

afbryde et script

Man afbryder en løkke med "break;", men hvordan går man helt ud af et script (svarende til "exit;" i php)?

I det her tilfælde skal jeg teste folks skærmopløsning og sende nogle variabler videre til URL'en via en reload.

Jeg forsøger med:

<script type="text/javascript"><!--
if (res&&res>0) { // Hvis scriptet allerede er blevet kørt én gang og siden loader igen.
  break;
  } else { //Hvis det er første load af siden og "res" altså endnu ikke er sat.
    if (screen.width<=800) {
    window.location.href=window.location.href+'?res=800';
  } if (screen.widht>=1024) {
    window.location.href=window.location.href+'?res=1024';
  }
}
//--></script>

Men det giver fejl ("'break' kan ikke optræde uden for løkken"). Men jeg er jo nødt til at bryde ud af scriptet for at forhindre at siden reloader i ring. Andre forslag?
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 18:25 #1
Bare fjern linien med break
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 18:26 #2
Men - noget helt andet - hvorfor tester du for skærmens
størrelse. Folk kører da ikke så tit igen med fuld skærm.
Specielt ikke når de har en stor opløsning. Jeg kører fx
typisk med 4 mindre vinduer - lidt overlappende. Det ville
være pænt af dig om jeg kunne se dine sider fornuftigt i
sådan et vindue.
Avatar billede mik789 Nybegynder
14. oktober 2002 - 18:31 #3
Hvad mener du egentlig? Sådan:

<script type="text/javascript"><!--
    if (screen.width<=800) {
    window.location.href=window.location.href+'?res=800';
  } if (screen.widht>=1024) {
    window.location.href=window.location.href+'?res=1024';
  }
//--></script>

Men så kører det da i ring....
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 18:33 #4
Det er heller ikke det jeg siger. Læs det igen
Avatar billede mik789 Nybegynder
14. oktober 2002 - 18:46 #5
Nej, du siger:

<script type="text/javascript"><!--
if (res&&res>0) { // Hvis scriptet allerede er blevet kørt én gang og siden loader igen.
  } else { //Hvis det er første load af siden og "res" altså endnu ikke er sat.
    if (screen.width<=800) {
    window.location.href=window.location.href+'?res=800';
  } if (screen.widht>=1024) {
    window.location.href=window.location.href+'?res=1024';
  }
}
//--></script>

men det giver da ingen mening...
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 18:47 #6
virker det?
Avatar billede mik789 Nybegynder
14. oktober 2002 - 19:15 #7
nej, det virker ikke. det skaber en evig reload, så urlen bare vokser:

http://www.minside.dk?res=1024?res=1024?res=1024?res=1024?res=.......

og siden aldrig loader færdig.
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 19:18 #8
Hvordan sætter du variablen "res" ?
Avatar billede mik789 Nybegynder
14. oktober 2002 - 19:27 #9
allerførst:

<script>
var = res;
if (res&&res>0) {
} else {

[osv.]

- det fandt jeg først ud af efter der var fejl: "res er ikke defineret"
Avatar billede mik789 Nybegynder
14. oktober 2002 - 19:29 #10
vrøvl!, sådan: var res;
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 19:31 #11
Det er den jo stadigvæk ikke. Du kan ikke uden videre
få værdien af noget fra URL-en i JavaScript. Det er ret
besværligt.
Avatar billede mik789 Nybegynder
14. oktober 2002 - 19:33 #12
jamen jeg kan jo godt få værdien. ganske vist loader den i ring, men den tager da hele tiden værdien med sig i URL'en som du så ((19:15:44)
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 19:35 #13
nej, du aflæser jo ikke værdien
Avatar billede mik789 Nybegynder
14. oktober 2002 - 19:45 #14
Jeg har gjort noget tilsvarende før, bare enklere. Jeg ville forhindre at tælleren på hovedsiden talte hvis man surfede tilbage til hovedsiden i den samme session (altså m.a.o.: kun én increment for hver session).

Det gjorde jeg ved at skrive URL'en med en variabel i de links der linkede tilbage til hovedsiden; sådan:
<a href="index.php?v=1">Tilbage</a>
Øverst på hovedsiden var så tælleren i et php-script:
<?php
if (!isset($v)) {
$counter = fopen("counter.txt", "r"); [osv.]

Samtidig kunne jeg jo se at variablen var sat i URL'en som nu ganske rigtigt hed http://www.denside.dk/index.php?v=1
og eftersom v nu var sat talte counteren ikke...

Det er lidt samme princip, altså det med at overføre en variabel via URL'en. Og denne gang er det også php der skal reagere på værdien af variablen ("res" i dette tilfælde). Håber det er klart....?
Avatar billede erikjacobsen Ekspert
14. oktober 2002 - 20:06 #15
yeps, men det er jo PHP. Er dine sider PHP allesammen, så kan du
jo kombinere PHP og JavaScript.
Avatar billede mik789 Nybegynder
14. oktober 2002 - 21:38 #16
det er jo præcis det jeg er ude på. så jeg skal bare have den ene variabel videre til URL'en, så er det php der skal klare resten.
så problemet er fortsat bare hvordan jeg får reloaded med en variabel uden at der bliver uendelig reload...
Avatar billede mik789 Nybegynder
15. oktober 2002 - 08:19 #17
andre på banen...?
Avatar billede atoft Nybegynder
15. oktober 2002 - 21:32 #18
Nu er jeg ikke PHP haj.

Men du skal jo have værdien af din res variablen i PHP session lagt over i dit javascript.

Som sagt kender jeg ikke syntaxen for dette - derfor lidt seudo.

<script>
  var res = <?php udskriv værdien af res variablen her >;
..
..

Når denne php side så køres vil du jo få dit javascript i klienten til at se således ud.

<script>
  var res = 800;
..
..
</script>
Avatar billede mik789 Nybegynder
16. oktober 2002 - 07:11 #19
Jeg burde jo faktisk kunne bruge samme metode som i counter eksemplet, bare ved at kombinere php og js. Sådan:

<?php if (!isset($res)) { ?>
<script type="text/javascript"><!--
if (screen.width<=800) {
  window.location.href=window.location.href+'?res=800';
} else if (screen.width>=1024) {
  window.location.href=window.location.href+'?res=1024';
}
//--></script>
<?php } ?>

tester lige om lidt....
Avatar billede mik789 Nybegynder
16. oktober 2002 - 07:26 #20
Det virker sørme.... hvorfor ku' jeg dog ikke se det fra starten. Og det har netop den effekt jeg spørger til i sp.: tester og reloader kun én gang.
Avatar billede mik789 Nybegynder
16. oktober 2002 - 07:28 #21
erikjacobsen> læg lige et svar .... I skal i hvert fald have lidt for at gide deltage
Avatar billede erikjacobsen Ekspert
16. oktober 2002 - 08:21 #22
Nej tak, jeg samler ikke på værdiløse point
Avatar billede mik789 Nybegynder
16. oktober 2002 - 08:51 #23
ok så, du ligger jo også forholdsvis lunt... ;-)
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