Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V2
Login / opret bruger

Forum \ Programmering og webdesign \ Hjemmeside design

Javascript - delay på "alert boks"?

Af Monster Nørd Juusuhako | 24-06-2019 12:55 | 1354 visninger | 20 svar, hop til seneste
Hej folkens, har nappet et stykke JS kode, som fungerer som en alert hvis nogen browser fra Internet Explorer. Problemet er, at alerten dukker op med det samme, med andre ord ser man stadig den "forrige" hjemmeside når den kommer frem, så jeg ville sætte et delay på den, dog uden held. Da kode nok ikke ville se smukt ud i et forumindlæg har jeg taget et screenshot: https://prnt.sc[...] Kan nogen spotte hvor fejlen ligger?
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#1
GumpDK
Elite Supporter
24-06-2019 12:59

Rapporter til Admin
Du skal have dit kode til at køre når siden er indlæst. Du kan finde et eksempel her: https://learn.jquery.com[...] Eller du kan søge på "javascript document ready" på Google...
--
#2
Juusuhako
Monster Nørd
24-06-2019 13:11

Rapporter til Admin
#1 Tak for tippet :) I princippet virker det med dette stykke kode imellem: https://prnt.sc[...] ...MEN, det ser ud til, at alerten alligevel dukker frem før selve hjemmesiden vises... Rækkefølgen er altså: 1: hjemmeside indlæses fuldt 2: alert dukker frem (her ser man stadig "forrige" hjemmeside) 3. tryk "OK" og korrekte hjemmeside vises med det samme. Rækkgefølgen er altså forkert, af en eller anden grund.
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#3
Vuy
Semibruger
24-06-2019 13:17

Rapporter til Admin
Måske ikke særlig genialt, men kan du ikke bare bruge en setTimeout ?
--
2x ASUS STRIX 1070 OC, I7 AIO WaterCooled, 16GB RAM, Samsung 850 Evo, 500Gb, x34a 100HZ UWQHD 3440x1440 G-SYNC. K70 RGB Keyboard, M65 Pro RGB Mouse
#4
GumpDK
Elite Supporter
24-06-2019 13:17

Rapporter til Admin
Hvordan kan siden være fuldt indlæst hvis den forrige side stadig vises?
--
#5
Juusuhako
Monster Nørd
24-06-2019 13:29

Rapporter til Admin
#3 Jo, er bare ikke sikker på hvordan den skal indsættes ift. den nuværende kode :/ #4 Ja, det lyder dumt, I know... Men uden det stykke kode i #2 screenshot, går der lige et halvt sekundt efter man trykker OK før den kommer. Med koden, virker det bare til at den er klar "instantly" efter man har trykket OK. Kan også være, det noget jeg bilder mig ind :)
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#6
Gill Bates
Monster Nørd
24-06-2019 13:29

Rapporter til Admin
Hvad mener du med "den forrige hjemmeside"? Hvis jeg nu går på google.dk først og bagefter ind på din side, vil din side så vise google.dk? Eller mener du bare den underliggende side, altså indholdet på din side?
--
Sidst redigeret 24-06-2019 13:30
#7
Juusuhako
Monster Nørd
24-06-2019 13:30

Rapporter til Admin
#6 Så vil alerten være fremme, men du vil stadig se Google hjemmesiden. Først når du trykker OK og lukker alerten, ser du "min" side. Jeg vil gerne have, at den indlæser siden og viser den og at alerten kommer bagefter. :)
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
--
Sidst redigeret 24-06-2019 13:31
#8
stallemanden
HOL Moderator
24-06-2019 13:36

Rapporter til Admin
Skal du ikke bare have dit script til at ligge til sidst i din "index-fil"?
--
http://onsdagssnegl.dk[...] "Held er noget, der indtræffer, når grundige forberedelser mødes med gunstig lejlighed"
#9
GumpDK
Elite Supporter
24-06-2019 13:37

Rapporter til Admin
Prøv nu bare det jeg foreslår i #1? $( document ).ready(function() { ?"DIN KODE HER" });
--
#10
Juusuhako
Monster Nørd
24-06-2019 13:46

Rapporter til Admin
#8 Jeg sidder i Wordpress og arbejder med Elementor. Al kode lige nu bliver indsat i en widget (burde dog fungere nontheless). #9 Nu jeg ikke den store kodehaj, men når jeg prøver kommer der slet ingen alert, medmindre det jeg har gjort er forkert: https://prnt.sc[...]
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#11
fresser2
Elitebruger
24-06-2019 14:12

Rapporter til Admin
#10 Din funktion isIE bør nok være udenfor tuborgklammerne, men det er nok ligegyldigt her. Har du inkluderet jquery på din side? Ellers vil det ikke virke.
--
#12
Juusuhako
Monster Nørd
24-06-2019 14:16

Rapporter til Admin
#11 Hvad mener du om jeg har inkluderet det? Jeg har det kode som står i screenshot i #10.
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#13
stallemanden
HOL Moderator
24-06-2019 14:19

Rapporter til Admin
https://digwp.com[...]
--
http://onsdagssnegl.dk[...] "Held er noget, der indtræffer, når grundige forberedelser mødes med gunstig lejlighed"
#14
Juusuhako
Monster Nørd
24-06-2019 14:32

Rapporter til Admin
#13 Står der ikke øverst på siden, under "Update", at Wordpress selv gør det, eller misforstår jeg ? :)
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#15
Zerock
Elitebruger
24-06-2019 14:37

Rapporter til Admin
#1's løsning kræver jQuery. Hvis du ikke har adgang til det i din Wordpress side, skal du inkludere det, som #13 foreslår. Derudover skal du have document i en teksstreng - $("document").... Ellers bliver document fortolket som variabel, som ikke er deklareret, og scriptet vil fejle. Men resultatet af af bruge $("document").ready() vil sandsynligvis være det samme, som dit forsøg med "DOMContentLoaded" i #2, da det er det første jQuery forsøger med $("document").ready(): https://stackoverflow.com[...] Grunden til, at det ikke virker efter din hensigt er, at der er forskel på DOMContentLoaded og hvornår hjemmesiden er klar til visning. Forsimplet vil browseren lave en proces ala: 1. Indlæs rå HTML. 2. Indlæs elementer refereret i HTML'en (CSS, billeder, scripts osv) 3. Når ovenstående er indlæst, så renderer browseren hjemmesiden. Når man benytter "DOMContentLoaded", så trigger den mellem skridt 1 og 2. Du kan i stedet forsøge dig med: window.onload = function () { /* din kode */ } Det lyder lidt mere som det du vil have, og du behøves ikke at bruge jQuery for at bruge den. Den fungerer godt nok ikke til _meget_ gamle versioner af Internet Explorer, men jeg ved ikke hvor vigtig ekstrem bagudkompatibilitet er for din side.
--
Sidst redigeret 24-06-2019 14:38
#16
Azakiel
Skribent
24-06-2019 14:38

Rapporter til Admin
jQuery er inkluderet men $ skal defineres, da de kører en safe mode / gammel as fuck version af jQuery som standard for kompabilitets årsager. Det største problem er nok at Elementor, som alle andre f'ing page builders, har så meget javascript der får lov at eksekvere før dit script overhovedet kommer til, og det potentielt er skyld i det du oplever med at den gamle side vises i baggrunden før resten er færdig med at rendere, da de fleste pagebuilders først henter content on-demand, og DOM'en derfor er "ready" før den egentlig er det. Mit bud er simpelthen bare at køre det over PHP, og enten inkludere en fil i en popup på siden som du lytter efter med javascript, eller ganske enkelt bare smider dem over på en side helt for sig selv med det info der skal bruges, og så sætter en Cookie så man kommer uden om at blive konstant redirectet til den side.
--
Veni, Vidi, Vici. dimidium facti qui coepit habet faber est quisque fortunae suae
#17
Juusuhako
Monster Nørd
24-06-2019 14:56

Rapporter til Admin
#15 Altså, hvis jeg smider det stykke kode ind du skriver øverst og lukker af i bunden, kommer der slet ingen popup, medmindre det fordi jeg mangler at angive noget et sted som jeg ikke ved. #16 Bare og bare :D Der jo en grund til jeg sidder med Elementor, netop fordi al det kode-halløj her ikke ligefrem er min stærkeste side ;)
--
Gigabyte Z77X-D3H i5 3570k @ 4.3GHz - Corsair H100i 8GB Corsair Vengeance Asus RX580 4GB
#18
Tux
Guru
24-06-2019 15:09

Rapporter til Admin
#14 Læs resten af den paragraf.
--
Don't feed the trolls.
#19
Tobias
Gæst
24-06-2019 15:58

Rapporter til Admin
Jeg tænker du måske også vil kunne bruge et preload-tag for at få dit js til at loade i starten af dit vandfald. Smid dit js op som en file i dit childtheme og kald det som nedenstående: <link rel="preload" href="chhildtheme/lib/main.js" as="script">
--
Gæstebruger, opret dit eget login og få din egen signatur.
#20
Zerock
Elitebruger
24-06-2019 16:06

Rapporter til Admin
Check den her JSFiddle ud, for se hvornår de enkelte events trigger, ift. indlæsning af indhold på siden: https://jsfiddle.net[...] Check i øvrigt forskellen mellem de forskellige browsere. Desværre virker JSFiddle ikke i IE, så du kan ikke teste det direkte, men du får stadig en forståelse for sekvensen af events. Jeg var forkert på den tidligere omkring $(document).ready() - den ser ud til at være den du leder efter. Selvfølgelig antaget, du får jQuery til at virke, ellers er window.onload stadig et godt bud.
--

Opret svar til indlægget: Javascript - delay på "alert boks"?

Grundet øget spam aktivitet fra udlandet, er det desværre ikke muligt for dig, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login