Avatar billede clausga Nybegynder
08. november 2006 - 21:13 Der er 30 kommentarer og
1 løsning

JavaScript slået fra - menuer virker ikke

Jeg kan se at når man sætter security i windows XP til HIGH, så må den også slå javascript fra.

Men hvor mange kører med javascript slået fra ?

For jeg kan se at her på eksperten.dk så virker top menuen ikke, og det gør den heller ikke på min egen siden når den er slået fra, og det er vel et problem, da nogle kunder ikke kan navigere rundt på min eshop, ?

kan man lave noget i PHP som hedder if(javaskript er slået til) { vis javascript menu } else { vis html menu }

Eller hvordan kommer man ud over dette problem ?
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:28 #1
<noscript>
Det der skal ske når JavaScript er slået fra.. feks. en menu
</noscript>
Avatar billede clausga Nybegynder
08. november 2006 - 22:33 #2
skal det så laves sådan her ?

<script type="text/javascript" language="JavaScript1.2">
hele min javascript menu er her i mellem som vises når javascript er slået TIL
</script>
<noscript>her skal menuen være som KUN vises når javascript er slået FRA
</noscript>

Hvad ser google ? den kan vel ikke læse min javascript menu, men den læser vel det mellem noscript så ?
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:37 #3
Så vidt jeg ved, ignorerer søgemaskiner JavaScript..

Dvs, alt hver der er lavet i (og udskrevet af) JavaScript, hopper den over..
Avatar billede clausga Nybegynder
08. november 2006 - 22:39 #4
var mit eksempel rigtigt ? og søgemaskinen læser vel det mellem noscript så ?
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:40 #5
Du kan jo stille spørgsmål ang. søgemaskiner her: http://www.eksperten.dk/spm/Generelt-IT/Soegemaskiner/

Eller læse artikler om søgemaskiner her: http://www.eksperten.dk/artikler/Generelt-IT/Soegemaskiner/
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:40 #6
Ja.. Undskyld.. jeg glemte at svar på det spørgsmål.. :-)
Avatar billede clausga Nybegynder
08. november 2006 - 22:42 #7
men det er blevet skrevet mellem noscript bliver jo også loadet i koden hvergang også selvom brugeren har javascript slået til ? og derved fylder siden jo også mere... var det så ikke mere smart med PHP som jeg spørger til i det andet spørgsmål ?
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:48 #8
Så vidt jeg ved: PHP kan ikke checke om JavaScript er slået til.

Du kan dog lave noge JavaScript kode, der loader en bestem PHP fil, som så kan afgøre om JS er slået til eller ej..


F.eks. kunne man gøre sådan:

meta-refresh sættes til 10 sekunder, url = fil.php?js=nej
javascript-window.location.href='fil.php?js=ja'

Du kan så se, om JS er slået til, hvis du på fil.php aflæser værdien af "js"..
Hvis værdien er "ja", sæt en session eller cookie, der smider din HTML menu ind..
Avatar billede thesurfer Nybegynder
08. november 2006 - 22:53 #9
Rettelse til 08/11-2006 22:48:26:

Hvis værdien er "nej", sæt en session eller cookie, der smider din HTML menu ind..
Avatar billede clausga Nybegynder
08. november 2006 - 22:54 #10
hvad ville du mene er bedst ? og hvad er den mest rigtige måde at gøre det på ?

jeg synes det med meta refresh lyder som en lidt fusket måde :)

på den anden side så synes jeg også NOSCRIPT ikke er helt ok, da den skal loade hele menuen i HTML selvom man har slået javascript til, som vel 95% har ?
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:06 #11
Hmmm..

Der er jo sådan set ikke noget fusket.. Du prøver på at finde ud af, hvad du har tilrådighed..

Jeg ville nok inkludere en PHP fil på alle siderne, der checker om der er en cookie/session med "no-js=true" eller ligende..

Hvis cookies ikke findes
  send til test side
ellers
  indsæt HTML menu

test side (checkjs.php):

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="5; URL=/checkjs.php?js=nej">
<script type="text/JavaScript" language="JavaScript">
window.location.href="/checkjs.php?js=js";
</script>
</head>
<body>
Tester JavaScript... det kan tage op til 5 sekunder..
</body>
</html>
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:09 #12
Lidt mere kød på:

<?php
if(isset($_GET["url"]))
{
    // sæt cookie
    header("Location: index.php");
    exit();
}
?>

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="5; URL=/checkjs.php?js=nej">
<script type="text/JavaScript" language="JavaScript">
window.location.href="/checkjs.php?js=js";
</script>
</head>
<body>
Tester JavaScript... det kan tage op til 5 sekunder..
</body>
</html>
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:11 #13
Copy&paste fejl.. :-)

Sådan:

<?php
if(isset($_GET["js"]))
{
    if ($_GET["js"] == "nej")
    {
        // sæt cookie
    header("Location: index.php");
    exit();
    }
}
?>

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="5; URL=/checkjs.php?js=nej">
<script type="text/JavaScript" language="JavaScript">
window.location.href="/checkjs.php?js=js";
</script>
</head>
<body>
Tester JavaScript... det kan tage op til 5 sekunder..
</body>
</html>
Avatar billede clausga Nybegynder
08. november 2006 - 23:15 #14
jeg er nu ikke helt vild med den meta-refresh....hmm men der er jo ikke rigtig andre muligheder!
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:16 #15
Sådan :-)

<?php
if(isset($_GET["js"]))
{
    if ($_GET["js"] == "nej")
    {
        // sæt cookie
    header("Location: index.php");
    exit();
    }
}
?>

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="5; URL=/checkjs.php?js=nej">
<script type="text/JavaScript" language="JavaScript">
if (!window.location.search) window.location.href="/checkjs.php?js=ja";
</script>
</head>
<body>
Tester JavaScript... det kan tage op til 5 sekunder..
</body>
</html>


Nu checker JavaScript, om der står noget i querystring, inden den loader /checkjs.php?js=ja..

Ellers bliver den ved med at loope..
Avatar billede clausga Nybegynder
08. november 2006 - 23:16 #16
men hvor mange har de slået fra ? man kan jo se her på eksperten er de jo ligeglade med folk der har slået det fra.... ;)
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:17 #17
Hvad er det lige at du kan lide ved meta-refresh?
Avatar billede clausga Nybegynder
08. november 2006 - 23:20 #18
at man kan komme til at vente i op til 5 sek, men det er selvfølgelig kun dem som har slået det fra....ellers kunne den vel også bare ændres til 1.... og der skal jo også noget kode til før det virker :) så var det måske bare lige så nemt at lave det i NOSCRIPT
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:22 #19
noget kode til før det virker?

Der skal ikke mere HTML eller JavaScript kode.. resten (sæt cookie) er PHP..

Derefter skal du checke om cookie eksisterer.. hvis den gør, indsæt HTML menuen..


Jeg ved ikke hvor stor en del der har JavaScript slået fra.. Det er jo egenligt de kloge der slår JavaScript fra = sikkert..

Eksperten er et dårligt sted at sammen med funktionalitet.. Der er alt for mange fejl og mangler..
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:22 #20
*at sammenligne funktionalitet (og ligende)..
Avatar billede clausga Nybegynder
08. november 2006 - 23:28 #21
Det er kun 5 links jeg skal have i min HTML menu så det er jo heller ikke så meget kode...

Jeg synes bare ikke den meta kode er så nem at få en på en side der eksitere med ca. 500 produkter (så 500 links ind fra google), der kan jeg jo ikke lige smide en tjek side ind først!
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:41 #22
Komplet eksempel:

* Check JavaScript ("checkjs.php"):
<?php
if(!isset($_GET["js"]))
{
    setcookie("js", $_GET["js"], time()+3600);
}
header("Location: index.php");
exit();
?>
<html>
<head>
<title>Tester JavaScript</title>
<META HTTP-EQUIV=Refresh CONTENT="5; URL=/checkjs.php?js=nej">
<script type="text/JavaScript" language="JavaScript">
if (!window.location.search) window.location.href="/checkjs.php?js=ja";
</script>
</head>
<body>
Tester JavaScript... det kan tage op til 5 sekunder..
</body>
</html>


* Udskriv menu ("udskriv_menu.php"):
<?php
if ($_COOKIE["js"] == "nej")
    {
?>
HTML MENU
<?php
} else {
?>
<script type="text/JavaScript" language="JavaScript">
document.write("javascript menu");
</script>
<?php
}
?>

* Cookie status ("cookie_status.php"):
<?php
if (!isset($_COOKIE["js"]))
{
    header("Location: /checkjs.php");
    exit();
}
?>


Og dine almindelige sider:

<!-- #include file="cookie_status.php" -->
<html>
<head>
</title>en side</title>
</head>
<body>
<!-- #include file="udskriv_menu.php" -->

noget tekst her

</body>
</html>
Avatar billede clausga Nybegynder
08. november 2006 - 23:43 #23
ok jeg prøver :) tak for hjælpen
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:43 #24
Jeg lagde lige mærke til, at der er 2x "</title>" i "Og dine almindelige sider:".. :-)

Det eneste problem er, hvis brugeren skifter mellem JavaScript slået til og JavaScript slået fra..

Man kunne jo også indsætte et check der dækker det område.. :-)
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:44 #25
Jeg programmerer ikke i PHP, så jeg håber at det virker.. :-)
Avatar billede clausga Nybegynder
08. november 2006 - 23:44 #26
men NOSCRIPT er altid KUN når browseren har deaktiveret javascript uanset hvilken browser ?!
Avatar billede thesurfer Nybegynder
08. november 2006 - 23:45 #27
Ja..

Men jeg har ikke brugt NOSCRIPT..
Avatar billede clausga Nybegynder
08. november 2006 - 23:55 #28
nej det var bare lige for at have styr på de 2 ting :)
Avatar billede cpufan Juniormester
09. november 2006 - 10:14 #29
Langt de fleste sites bruger javascript, grunden til at man slår javascript fra er jo for at undgå ondsindet kode at udføre.
så når en bruger går ind på en side, må han vurdere om han har "tillid" til siden,
og derefter tillade javascript.

en nem måde er:

i header

<javascript>
function skjul()
document.getElementById('info').style.visible = false;
</javascript>

<body onload="skjul()"><div id="info">Denne side kræver javascript for at køre!!!</div>

er javascript slået til skjules info, er javascript slået fra vises info.
Avatar billede thesurfer Nybegynder
09. november 2006 - 10:22 #30
clausga> Hvis <!-- #include file="udskriv_menu.php" --> ikke virker, prøve med:

<? include("udskriv_menu.php") ?>

Og det samme med alle andre includes..

cpufan> Jeg har rettet koden lidt:

<script type="text/JavaScript" language="JavaScript">
function skjul()
{
document.getElementById("info").style.display = "none";
}
</script>
Avatar billede cpufan Juniormester
09. november 2006 - 10:31 #31
tak thesurfer,
taget udfra hukommelsen, hvilket åbenbert ikke er for godt her i morgenstunden
du er min ven ;-)
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