Avatar billede mads1987 Nybegynder
08. marts 2007 - 04:44 Der er 21 kommentarer og
1 løsning

Javascript problem efter opdatering af browser.

Efter jeg har opdateret min explore til den smarte Internet Explore 7, er der noget javascript der ikke længere virker.

Det drejer sig om følgende stump kode, som skulle sende brugeren videre samtidig med at k_3122 og positionen på siden blev lagt i en GET variabel.

Når jeg kører koden nu kommer GET variablerne ikke med.

function nav2(f) {
    var o = document.compatMode=="CSS1Compat" ? document.documentElement : document.body;
    f.pos.value = o.scrollTop;
}

<input type='submit' name='submitknap' onclick="this.form.knap.value='k_3122';nav2(this.form)">

Skriv hvis det er helt uforståeligt :)
Avatar billede mads1987 Nybegynder
08. marts 2007 - 04:46 #1
Det var noget sludder jeg fik skrevet der. Det er selvfølgelig knappens værdi der skal antage en bestemt værdi. F.eks. k_3122 og positionen hvor formen befinder sig. Dette sker dog ikke i den nye browser.
Avatar billede windcape Praktikant
08. marts 2007 - 08:07 #2
har du debugget værdien af o.scrollTop; ? det kan jo være at o ikke er en objekt, og/eller værdien ikke kan aflæses korrekt.
Avatar billede mads1987 Nybegynder
08. marts 2007 - 21:40 #3
Hvordan debugger jeg en værdi?
Avatar billede roenving Novice
08. marts 2007 - 21:47 #4
alert(o.scrollTop);
Avatar billede mads1987 Nybegynder
08. marts 2007 - 21:58 #5
Så får jeg en fejl som fortæller mig at o is undefined?
Avatar billede roenving Novice
08. marts 2007 - 22:09 #6
Hvad er compatMode ?-)
Avatar billede mads1987 Nybegynder
08. marts 2007 - 23:26 #7
Ja, jeg ved det ærlig talt ikke :) Jeg ved bare at denne nav2 funktion skal finde positionen af scroll baren, således at jeg kan sende værdien videre til næste side vha. formen, og på næste side automatisk scrolle ned til formen igen.
Avatar billede roenving Novice
08. marts 2007 - 23:31 #8
alert(compatMode); !-)
Avatar billede mads1987 Nybegynder
08. marts 2007 - 23:47 #9
compatMode er ligeledes undefined ?-)
Avatar billede roenving Novice
08. marts 2007 - 23:58 #10
Hvad er din docType ?-)
Avatar billede mads1987 Nybegynder
09. marts 2007 - 04:28 #11
Den er loose:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

Kan det være problemet?
Avatar billede roenving Novice
09. marts 2007 - 04:38 #12
Det burde det i hvert fald ikke være ...

alert(document.compatMode); !-)

-- jeg glemte, at det jo ikke er en window-property ...
Avatar billede mads1987 Nybegynder
09. marts 2007 - 09:12 #13
Så får jeg en alert som skriver "BackCompat", bliver mere og mere forviret :-)
Avatar billede roenving Novice
09. marts 2007 - 09:23 #14
-- har du noget før doctype ?-)
Avatar billede mads1987 Nybegynder
09. marts 2007 - 11:42 #15
Niks, ingenting før doctype.
Avatar billede olebole Juniormester
09. marts 2007 - 13:45 #16
<ole>

Et langt ude skud: Prøv at lave et mellemrum i DTD'en (09/03-2007 04:28:31) lige før URL'en - mellem de to par gåseøjne:
    "... Transitional//EN" "http://www.w3 ..."

Hjælper det ikke, må du lægge et link til siden  =)

/mvh
</bole>
Avatar billede mads1987 Nybegynder
10. marts 2007 - 02:28 #17
Nu fik jeg selv løst problemet, det var noget kode der var "forsvundet", og der gik lidt for lang tid inden jeg opdagede det. Til andre der falder over spørgsmål og har brug for den omtale funktion kommer der en simpel version her:

<?
    if(isset($_REQUEST["submitknap"])){
        header("location: ?vaerdi=".$_POST["knap"]."&pos=".$_POST["pos"]."");
    }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="stylesheet/style.css">
<script>
// Funktion der henter hvor på siden man er når submit knappen trykkes
function nav2(f) {
    var o = document.compatMode=="CSS1Compat" ? document.documentElement : document.body;
    f.pos.value = o.scrollTop;
}

// Funktion der sender brugerne ned til den givne position
var _GET={}; /* global object til opbevaring af dokument variabler... */

vars=window.location.href;

if(vars.indexOf("?")!=-1)vars=vars.replace(/\+/g," ").replace(/.*?\?/,"").split("&");
else vars=[];

for(i=0;i<vars.length;i++){
  vars2=vars[i].split("=");
  _GET[unescape(vars2[0])]=unescape(vars2[1]);
}

window.onload=function(){
  if(_GET['pos'])window.scrollTo(0,_GET['pos']);
}
</script>
</head>
<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<form action="" method="post" name="formdergemmer">
<input type="hidden" name="knap">
<input type="hidden" name="pos">
<input type="submit" name="submitknap" onclick='this.form.knap.value=1;nav2(this.form)' value='Opdater'>
</form>
</body>
</html>

I må gerne svare.
Avatar billede roenving Novice
10. marts 2007 - 02:36 #18
Hrm, der findes faktisk en direkte vej til get-parametre i urlen:

var _GET={}; /* global object til opbevaring af dokument variabler... */

vars = window.location.search.substring(1);

if(vars)
  vars = unescape(vars).split("&");
else
  vars = [];
Avatar billede olebole Juniormester
12. marts 2007 - 12:29 #19
Ja, det er da noget rod at sende variablerne som 'post' - og derefter redirect'e med variablerne sendt som 'get' ... specielt, når det ikke er nødvendigt  ;o)
Avatar billede mads1987 Nybegynder
03. juli 2007 - 15:06 #20
Smid gerne et svar roenving
Avatar billede roenving Novice
05. juli 2007 - 06:02 #21
Oki '-)
Avatar billede roenving Novice
04. oktober 2007 - 02:33 #22
-- og tak for point ;~}
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