Kom væk fra document.write()

Tags:    javascript

<< < 12 > >>
Det lader til at document.write() ikke er så godt at bruge så derfor vil jeg gerne helt væk fra det.

Jeg har følgende kode.
Fold kodeboks ind/udJScript kode 


Funktionen kalder jeg så flere steder på samme HTML side.
Fold kodeboks ind/udHTML kode 


Hvordan laver jeg det om så jeg ikke skal bruge document.write() ?

Skal jeg createtag('<span>') også appendchild eller hvad er bedst/mest simpelt ?



19 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 10 karma
Sorter efter stemmer Sorter efter dato
getElementsByClassName virker vist bare ikke i IE8 det lidt noget øv.



Så brug getElementsByTagName('a') og check om tagget har css-klassen



Er det ikke vildt ueffektivt at skulle hente alle links ?



Kommer an på hvor mange du har. Men getElementsByClass henter jo i princippet alle tags (ved godt at de nye browsere selv sørger for at hente dem hurtigt). Men hvis du skulle lave din egen getElementsByClass funktion til de gamle browsere, skulle du jo alligevel hente ALLE elementer.
Så der har du jo "sparet" lidt, ved kun, at vælge alle links ;)
Håber det giver mening :)



Fold kodeboks ind/udJScript kode 


Så er du også helgarderet.

edit:
document.querySelectorAll er understøttet i IE8:
http://caniuse.com/queryselector



Indlæg senest redigeret d. 03.12.2012 22:41 af Bruger #11328
Nu har jeg lavet det sådan her.

Fold kodeboks ind/udHTML kode 


Fold kodeboks ind/udJScript kode 


Har i nogen forbedringer til den måde at gøre det på ?

Hvad forskel er der ved at bruge querySelectorAll og getElementsByClassName ? Andet end lidt forskellig understøttelse.

Nu hopper teskten på hjemmesiden bare fordi emailadressen først tilføjes ved 'load'. Før med document.write der stod den der hele tiden uden at teksten hopper.



Indlæg senest redigeret d. 04.12.2012 00:00 af Bruger #13010
Du ved reelt ikke om du får lidt spam fordi dit nuværende javascript virker eller om de er fordi dit spamfilter er effektivt.

Jeg tror jeg bare havde skrevet det i klar tekst og stolet på spamfilteret eller slettet de mails og så brugt tiden du nu bruger på at omgå det (uden at vide om det er nødvendigt) på noget mere konstuktivt.

Alternativt kan du jo bare indsætte et billede af din email.



scootergrisen: Det giver ingen mening, for de fleste mail-fetchers benytter en (halv-avanceret) regular expression direkte på kildekoden. Så hvis du skriver din email i klartekst, er det ligemeget hvor på siden den kommer til at være: Om det er i et script tag eller et span tag er ligegyldigt.

Som Brian siger, kunne du evt. sætte et billede ind, men det hjælper vidst kun mod de mest rudimentære, da de fleste bots har indbygget OCR og for at undgå det skal du lige pludseligt i gang med CAPTCHAs og så ryger brugervenligheden for alvor!

Spam-filtre er effektive - Og de fleste benytter en Machine Learning algoritme, der lærer at genkende spam, så når du flagger de første 10 spam mails, så har den allerede lært at ignorere dem.

Ang. querySelectorAll / getElementsByClassName, er querySelectorAll meget mere divers. Den tillader dig at søge i DOM træet ved hjælp af CSS selectors, som .classname og #id. getElementsByClassName har kun een funktion og det er at finde alle de DOM elementer med det givne className.



Indlæg senest redigeret d. 04.12.2012 10:25 af Bruger #11328
Emailen skal ikke være et billede fordi det skal ikke være besværligt for alimindelige folk at skrive til mig direkte.

Jeg skriver ikke min email i direkte i koden, jeg skriver ligesom sådan her : &#109;a&#105;&#108;&#116;... osv
Også fordelt på flere linier.
Også kunne jeg også fordele det på flere variabler for at gøre det lidt mere svært.

Ja jeg gider ikke CAPTCHA på grund af det afholder folk fra at skrive.

Jeg har gmail og modtager lidt i spam mappen men der er måske også mere end det som gmail sorter fra som jeg aldrig ser, der ved jeg ikke.



Indlæg senest redigeret d. 04.12.2012 19:30 af Bruger #13010
<< < 12 > >>
t