Onko tässä tradeboublerin javascript-koodissa mitään järkeä:
<script type="text/javascript"> var uri = 'http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11); document.write('<sc'+'ript type="text/javascript" src="'+uri+'" charset="ISO-8859-1"></sc'+'ript>'); </script>
Tätä rupesin ihmettelemään, kun validaattori moitti tuota "sc" tagia. Miksi ihmeessä pitää laittaa
'<sc'+'ript
Onko tuossa jokin idea, kun ei ole laitettu suoraan
'<script
Ja haluan kysyä, toimiiko tuo mainosjuttu, jos korjaa tuon?
Pekka Mansikka kirjoitti:
Miksi ihmeessä pitää laittaa
'<sc'+'riptOnko tuossa jokin idea, kun ei ole laitettu suoraan
'<script
En tiedä tuosta alotusgista, mutta lopetustagi on katkaistu, ettei tyhmät selaimet luule, että se oikea script-elementti loppuu siihen kohtaan.
Ilmeisesti tuo on tuon takia pakko tehdä noin. Vähän keplottelua.
Olisiko siihen javascriptin puolella mitään funktiota, joka hoitaisi sen asiallisemmin?
En kyllä todellakaan näe tuossa sinänsä mitään ongelmaa. Ongelmahan on validaattorissa, ei sillä pitäisi olla mitään syytä valittaa tuosta.
Voisihan tuon varmaan muutta muotoon
document.write('\x3csc'+'ript type="text/javascript" src="'+uri+'" charset="ISO-8859-1">\x3c/sc'+'ript>');
Näin se älyvapaa validointiscripti ei luulisi noita html-tageiksi.
Pekka Mansikka kirjoitti:
Ja haluan kysyä, toimiiko tuo mainosjuttu, jos korjaa tuon?
Luultavasti toimii huonommin eri selaimilla. Jos selain ei ymmärrä skriptiä ja vastaan tulee merkintä "</script>", selain ei voi mitenkään tietää, loppuuko skripti tähän vai onko kyseessä pelkkä skriptin sisällä oleva merkkijono.
No se kyllä riippuu miten sen "korjaa", eli esimerkiksi tuon mainitsemani esimerkin tyylillä "korjattuna" ei ole mitään vaikutusta toimivuuteen.
Laitoin korjaamisen lainausmerkkeihin, koska itse koodissa ei ole mitään vikaa, mutta tässä nyt yritetään saada validaattori "toimimaan"
Joo, viittasin alkuperäiseen "korjaukseen", jossa tagi kirjoitettaisiin vain sellaisenaan.
Jes. Eri asia mitä pidää tärkeänä. Minusta validaattorin hyväksymys on tärkeämpi kuin pelkästään se, että skripti toimii. Jos validaattori moittii, vika on skriptissä, ei validaattorissa.
Tässä kuitenkin lyhyempi ehdotus.
<script type="text/javascript" src="http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);" charset="ISO-8859-1"></script>
Ainkakin testissä tämä toimii. En ole vielä kokeillut, mitä validaattori sanoo.
Edit: No niin. Testattu on ja validaattori ei moiti tätä minun korjausta tippaakaan.
Pekka Mansikka kirjoitti:
Jes. Eri asia mitä pidää tärkeänä. Minusta validaattorin hyväksymys on tärkeämpi kuin pelkästään se, että skripti toimii. Jos validaattori moittii, vika on skriptissä, ei validaattorissa.
Siis olet ihan tosissasi sitä mieltä, että kun validaattorissa on bugi, niin se on sen bugin esiin tuovan validoitavan materiaalin vika?
Itse olen sitä mieltä, että jos koodi on validia, niin sillä ei ole mitään merkitystä mitä validaattori siitä sanoo.
Jos kerran tuon skriptin toimiminen ei ole olennaista, niin eikö olisi järkevämpää jättää koko skripti pois?
Jos nyt kuitenkin haluat että se menee siitä validaattorista läpi, etkä halua tehdä aikaisemmin antamani esimerkin mukaan, vaan haluat tehdä tuollaisen muutoksen että siihen ei tule satunnaista merkkijonoa (jolloin se ei lataa joka kerta skriptiä uudelleen) niin suosittelisin ehkä ennemmin laittaman sen sitten näin:
<script type="text/javascript" src="http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)" charset="ISO-8859-1"></script>
Turhaa tuota ylimääräistä roskaa pitää siellä src-parametrin lopussa.
Grez kirjoitti:
Siis olet ihan tosissasi sitä mieltä, että kun validaattorissa on bugi, niin se on sen bugin esiin tuovan validoitavan materiaalin vika?
Itse olen sitä mieltä, että jos koodi on validia, niin sillä ei ole mitään merkitystä mitä validaattori siitä sanoo.
Jos kerran tuon skriptin toimiminen ei ole olennaista, niin eikö olisi järkevämpää jättää koko skripti pois?
Millä sinä päätät, että koodi on validia? Ja millä sinä perustelet, että validaattorissa on bugi esim. tässä asiassa?
Entä kun validaattorin mielestä tuo minun tekemäni muutos on validi, pitäisikö ihmetellä, että tuo tradedoblerin ei sitä ole?
Lähinnä kommentoin tuota asennettasi, että validaattorissa ei voi olla bugia. Sano nyt sitten minkä speksin mukaan olet sitä validoimassa. Muuten en voi pahemmin varmistaa onko vika koodissa vai validaattorissa.
Kuten jo edellä sanoin, niin minusta ei ole mitään merkitystä mitä validaattori sanoo vaan sillä, onko koodi validia vai ei.
Joka tapauksessa tuossa sinun viimeisimmässä korjausehdotuksessa ei ollut hitusenkaan verran järkeä. (Siis siinä, että pidetään osa javascriptiä tekstinä siellä src-parametrin lopussa)
lainaus:
Kuten jo edellä sanoin, niin minusta ei ole mitään merkitystä mitä validaattori sanoo vaan sillä, onko koodi validia vai ei.
Minä en tiedä muuta mittapuuta sille, mikä on validia ja mikä ei, kuin validaattori.
Ps. Tuossa minun scptissäni on src:n laitettu ihan sama juttu kuin tradedoublerin skriptissäkin. Olen tulostanut sen selaimelle vain ilman tuota document.writeä, ei näytä sitä tarvitsevan.
Toimiikin ihan samalla tavoin, vaihtaa välillä mainoksia jne.
Eikö skripti ole tapana merkitä HTML-kommentiksi, siis jotenkin näin:
<script type="text/javascript"> <!-- // Siis kommentti alkaa // Koodia, ja lopuksi kommentti loppuu (//:n jälkeen kaiketi, jottei JS-tulkki tukehtuisi). //--> </script>
Metabolix kirjoitti:
Eikö skripti ole tapana merkitä HTML-kommentiksi, siis jotenkin näin:
<script type="text/javascript"> <!-- // Siis kommentti alkaa // Koodia, ja lopuksi kommentti loppuu (//:n jälkeen kaiketi, jottei JS-tulkki tukehtuisi). //--> </script>
Jes. Tämäkin puuttuu tradelta, mutta se ei ole pakollinen.
Pekka Mansikka kirjoitti:
Ps. Tuossa minun scptissäni on src:n laitettu ihan sama juttu kuin tradedoublerin skriptissäkin.
Tradedoublerin skripti tuottaa tällaisia SRC-parametriksi:
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)610456043
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)700461099
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)915852178
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)698788986
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)042597141
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)513786127
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)749390240
Sinun skriptitön versio tuottaa tällaisia SRC-parametreiksi:
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);"
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);"
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);"
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);"
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)' + new String (Math.random()).substring (2, 11);"
Eli kuten huomaat, tradedoublerin skripti tuottaa käytännössä joka kerta eri linkin. Sinun versio tottaa aina saman linkin.
Koska kerran tuo osoitteen vaihtelu ei ole sinulle tärkeää, niin sinuna laittaisin SRC:ksi vaan:
http://impfi.tradedoubler.com/imp?type(js)pool(194716)a(1365109)
Se toimisi täsmälleen samalla tavalla kuin tuo sinun älyvapaa virityksesi, mutta ei olisi niin älyvapaa.
Oletko testannut ja klikannut bannereita vai pohditko noita vain päässäsi?
Minä olen testannut.
Joo, no en voi sitte mitään jos et halua hahmottaa.
Kyllä tuossa minun skriptissäni tuo linkin loppuosa jatkuu ihan samoin kuin tradellakin. Ei se katkea kesken. Teoriassa niin voisi luulla, mutta käytännössä niin ei tapahdu, nykyselaimet ovat sen verran viisaita.
Tuo tradedoublerin skripti on luotu siihen aikaan, kun selaimet olivat vielä lasten kengissä. Se lienee yhtä vanha kuin on kyseinen yrityskin.
Pekka Mansikka kirjoitti:
Teoriassa niin voisi luulla, mutta käytännössä niin ei tapahdu
No, minä en ole luullut mitään, tuossa aikaisemmassa viestissäni näkyy ihan täsmällisesti mitä tuossa tapahtuu. (Mitä nyt foorumisofta lyhentää keskeltä tuota pisintä linkkiä.)
Mutta kuten sanoin, jos et halua hahmottaa vaikka rautalangasta väännän niin ei voi mitään. Eikä tämä nyt edes ole kovin yllättävää. Tällaisia virityksiä tulee vastaan, kun tekijät eivät tiedä mitä tekevät vaan säätävät "yritys & erehdys" -menetelmällä.
Okoon miten on, joka tapauksessa olen huomannut että tradedoublerin skripti ei näytä yhtään sellaista banneria, mitä tuo minun skiprini ei testissäni ole näyttänyt, vaikka kuinka sivua päivitän.
Ei se tilanne siitä muuttuisi myöskään vaikka jättäisit tuon
' + new String (Math.random()).substring (2, 11);
-roskan pois sieltä lopusta.
Grez kirjoitti:
Ei se tilanne siitä muuttuisi myöskään vaikka jättäisit tuon
' + new String (Math.random()).substring (2, 11);
-roskan pois sieltä lopusta.
Testataan... :)
No niin. Testattu on molempia. Tulos sama molemmissa.
Grez, olit oikeassa, tuon poistaminen ei vaikuta mitenkään.
Mutta se sääntö pätee myös tradedoblerin skriptiin. Siinäkin tuo loppurimpsu on turha. Kun siitäkin sen poistaa, se ei vaikuta sen toimintaan mitenkään.
Sen tradedoublerin alkuperäisen koodin loppurimpsun idea on, että selain lataisin skriptin joka kerta uudelleen. (Eli URL vaihtuu joka kerta). En tiedä miksi Tradedoubler on kokenut tarvitsevansa moisen, eli miksi sen palvelimelta ladattavan skriptin pitäisi latautua joka kerta uudelleen. Mahdollisesti se liittyy joihinkin innokkaasti cachaaviin selaimiin.
Joka tapauksessa tuo muutettu systeemi toimii eri tavalla kuin alkuperäinen ainakin joillakin selaimilla joissakin tapauksessa - tuskin ne huvin vuoksi sitä on tehneet.
Missä tuo URL vaihtuminen käytännössä tulisi näkyä? Eikö html-linkissä?
Mutta nyt nämä vaihtumiset tapahtuu samoin, oli tuota rimpsua tai ei.
Esim. jos otetaan tuo tradedoubler. Vaikka tuo rimpsu on siinä, sama banneri voi sivua ladatessa tulla kaksi kertaa peräkkäin.
En ole huomannut, että selain lataisi skriptiä uudellen ilman sivun päivittämistä. Sama banneri pyörii, kunnes päivittää sivun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.