Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
Javascript - delay på "alert boks"?Af Monster Nørd Juusuhako | 24-06-2019 12:55 | 3638 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
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... -- #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 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 Hvordan kan siden være fuldt indlæst hvis den forrige side stadig vises? -- #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 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 #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 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" Prøv nu bare det jeg foreslår i #1?
$( document ).ready(function() {
?"DIN KODE HER"
});
-- #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 #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. -- #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
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 #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 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
#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 #14
Læs resten af den paragraf. -- Don't feed the trolls. 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. 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. --
Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.
Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.
Opret bruger | Login
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 225 personer har stemt - Mit energiselskab (Ewii f.eks) 11%
|