Avaleht
uus teema   vasta Tarkvara »  WWW »  Foxreplace'ga HTML koodi asendades HV foorumis kasutajanimel klikates see tekstikasti ei ilmu märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 20.12.2012 16:59:08 Foxreplace'ga HTML koodi asendades HV foorumis kasutajanimel klikates see tekstikasti ei ilmu vasta tsitaadiga

Mul oleks hädasti vaja HV siseselt ja väliselt asendada HTML koodi endale meelepäraseks. Põhjuseid on palju, miks see vajalik on ja detailidesse laskuma ei hakkaks.

Kasutan Firefoxi ja netist leidsin sellise lisa nagu Foxreplace 0.13.3 -> https://addons.mozilla.org/en-us/firefox/addon/foxreplace/ , aga kummaline nähtus ilmub, kui kasutan HTML replace. Nimelt kui mul on HTML asendamine sisse lülitatud, siis foorumis kasutajanimel klikates peaks see ilmuma alla tekstikasti, aga seda ei juhtu. Aga kui kasutan selle lisaga ainult URL asendamist, siis see probleem kaob. See ei ole seotud ühegi asendatava sõnega, mis kuidagi kattuks, vaid kui lisan asendatavaks ja asendajaks ükskõik mis lampi sõne, mis ei kattu mitte kuidagi, aga panen linnukese alla "Replace HTML", siis ilmneb probleem.

All on pilt sellest, milliseid asendajaid hetkel kasutan. Teine ja kolmas olid vahepeal katsena, kuna proovisin tekstikastile anda lisaks nimele "message" ka id="message. Aga sellega tuli uus probleem, mida ma ei osanud lahendada ja kuna see oli ammu, siis hetkel ei mäleta täpsemalt. Sai vastavalt muudetud ka emoticon(text) (lähtekoodis). Hetkel pole need aktiveeritud, kuna HTML=no.
Viimane on see, millega katse korras toimetan. HTML koodi asendab kenasti ära ja "LiivaneLord" asendab "Olavi"-ga, aga lingil klikkides ei juhtu mitte midagi.
Spoiler Spoiler Spoiler

Milles võib olla asi?

Ise ma uurisin foorumi lähtekoodi ja leidsin sellise rea:

<input type='submit' name='post' class='mainoption' value='sisesta' tabindex='2'>

Sellel on sama "name", mis natuke eespool:

<form action='posting.php' method='post' name='post' onsubmit='return checkForm(this)'>

Kas on viga selles, et kaks samanimelist elementi on või milles võib olla probleem, et tekstikasti midagi ei ilmu? Samuti ei toimi ükski emotikon ja sisestavat teksti ei saa saata ega kasutada eelvaadet, kuna "eelvaade" ega "sisesta" nupp ei toimi, midagi ei juhtu. Viga peab olema kuidagi sellega seotud vist? Ja milline replace võiks parandada seda viga?
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 21.12.2012 22:25:41 vasta tsitaadiga

Imo kõik mis sa tegelt vajad on korralik userscript.

Vähemasti see: "foorumis kasutajanimel klikates peaks see ilmuma alla tekstikasti" peaks olema suhteliselt kergesti lahendatav userscriptiga (.js fail mida browser ise mingil kindlal lehel launchib. Too javascript seal saab kenasti kõigele ligi ning sellised actionid on no problem)
Samuti saan aru, et asendad uued nimed inimestel vanadega mis oleks ka suhteliselt lihtsast userscriptiga lahendatav.

Seega minu lahendus probleemile oleks userscripti kirjutamine mitte plugina kasutamine. See eeldab javascripti teadmisi.
Kui ma täna veel aega leian, siis võin ühe produktiivse posti ka teha juba konkreetse userscriptiga, moment pole aega et koodi kirjutama hakata.
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 21.12.2012 23:11:32 vasta tsitaadiga

Redikate, uurisin jah Greasemonkeyd ja selle võimalusi. Ilgelt lihtne oleks, kui näiteks "LiivaneLord" asendan "Olavi"-ga skriptiga, mis sisaldab:

document.body.innerHTML= document.body.innerHTML.replace(/LiivaneLord/g, "olavi");

Aga ka sellega kaasnevad eelpoolmainitud probleemid. Kasutajanimel klikkimise funktsionaalsuse suutsin ma ise taastada, aga kindlasti ei ole see lahendus, sest foorumis ja ka teistel lehtedel on neid skripte lõpmata hulk ja võimatu oleks kõigi nende jaoks mingi vastupidine lahendus genereerida. Ja foorumisse postitada ka ei saa, kui skript sellel lehel töötab. Ei ole jaksanud sellele lahendust leida, kuna leidsin, et see oleks mõttetu.

Ühesõnaga tahan HTML replace teha selliselt, et kõik lehel sisalduvad javascripti skriptid toimiksid ka siis, kui ma midagi asendan. HV foorum on ses mõttes hea näide, kus katsetada.

Ja teine asi - ma tahaks oma skripte kasutada ainult ühel ja konkreetsel lehel, mitte kõigil. Kuidas seda teha? Include lahtrist ei saa ma aru. Kui ma sinna midagi lisan, siis skript käivitub sellegipoolest kõikidel lehtedel.


viimati muutis LiivaneLord 21.12.2012 23:21:42, muudetud 1 kord
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 21.12.2012 23:14:03 vasta tsitaadiga

Kuna teema juba läks userscript peale, siis panen lingi kus sellest veidi juttu on.
userscript

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 22.12.2012 00:17:57 vasta tsitaadiga

Userscripti saab jooksma panna ainult kindlal lehel. Kasvõi aladomeenil või ainult ühes foorumi topicus.
Ma katsun natukese aja pärast testida ja kirjutada vähe.

_________________
http://nodejs.org/
"I'm also a person. Programming is just one thing I do."
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 22.12.2012 01:16:16 vasta tsitaadiga

Proovisin veel väheke:

var str=document.body.innerHTML;
var n=str.replace("LiivaneLord", "Olavi");
alert(n);
document.body.innerHTML=n;

Aga javascript ei toimi ikka.

Kuidas saaks muutuja väärtuseks kogu kupatuse koos html ja head tagidega? Aga samas, kui praegusel viisil ei saa, siis ei saa koos kogu sisuga ka vist? Näiteks HV foorumi javascripti funktsioon asub väljaspool head tagi. emoticon() näiteks, mis määrabki, mis juhtub, kui klikin kasutajanimel.
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 22.12.2012 01:20:53 vasta tsitaadiga

Kas sa tahad, et LiivaneLord oleks Olavi aga peale vajutades sisestaks "LiivaneLord" või et peale vajutadeds sisestaks Olavi
_________________
http://nodejs.org/
"I'm also a person. Programming is just one thing I do."
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 22.12.2012 01:45:42 vasta tsitaadiga

Redikate, tahaks täielikku asendust, et kõik veebilehel muutuks Olaviks, aga kõik muud funktsioonid veebilehel toimiksid. See oleks lihtne näide. Kui seda saavutaks, siis sealt oskaksin ise edasi asja arendada, aga hetkel saan küll asendada, aga javascript ei toimi.
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 22.12.2012 03:00:05 vasta tsitaadiga

Mnjah, niimoodi lambist ei saanudki aru miks JS katki läheb. Kui tead kus vaja asendada on, siis pole iseenesest probleemi (postid, username jms). Aga kui üritada kinnisilmi kogu lehel ära asendada, lähevad asjad katki.
Vast mingipäev leian rohkem aega uurida. Moment ei oska muud soovitada kui lihtsalt pin-pointida täpsed kohad ning seal muuta. jQueryiga suhteliselt lihtne, lihtsalt tüütu tegevus ja nii mõnigi koht võib niimoodi vahele jääda.

Siin ka greasemonkey script siis, see vahetab esialgu nähtava kasutajanime ära, lihtsalt näiteks. jQueryiga saab ka postid läbi käia jms.
http://pastebin.com/nZTMQQ4d

Eks ma annan teada kui mingeid mõtteid tekib veel.
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 22.12.2012 03:24:04 vasta tsitaadiga

document.documentElement.innerHTML;

See valib kogu lehe koodi, aga see on ka kõik.

var n=str.replace("LiivaneLord", "Olavi");
document.documentElement.innerHTML=n;

Midagi ei muutu sellega.

Eks peab leppima, et tuleb täpsemalt elementide järgi asendama. Põhimõtteliselt sellest peaks ka piisama, kuna seda läheb tarvis piiratud hulgal lehtedel ja nende jaoks loon eraldi skriptid. icon_smile.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
iFlop
Kreisi kasutaja
iFlop

liitunud: 03.05.2003



Autoriseeritud ID-kaardiga

sõnum 22.12.2012 14:24:06 vasta tsitaadiga

LiivaneLord kirjutas:
tahaks täielikku asendust, et kõik veebilehel muutuks Olaviks, aga kõik muud funktsioonid veebilehel toimiksid.

Kas saad aru, et põhimõtteliselt tahad võimatut? icon_wink.gif
Mõni keerukam veebileht võib koosnedagi põhiliselt JS'st. Mõni väike muudatus HTMLis ning võib juhtuda, et JS enam ei töötagi selle tõttu.
Üks näide kus replace("LiivaneLord", "Olavi") vist ei toimi:
http://jsfiddle.net/2wFcX/
icon_lol.gif
Kommentaarid: 67 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 66
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 22.12.2012 15:55:49 vasta tsitaadiga

iFlop, hakkan vaikselt aru saama jah. Lihtsalt igaks juhuks tegin teema, et küsida. icon_biggrin.gif

Minu eesmärk on HTMLis muudatusi teha täiesti teadlikult. Peamiselt ongi vaja muuta just neid parameetreid, mis veebilehel scriptidele ette söödetakse.

HV foorumis näiteks sööta funktsioonile emoticon('LiivaneLord,') hoopis emoticon('Olavi,'). Siin oleks vajalik, et just see funktsioon toimiks endistviisi, aga lihtsalt uue parameetriga. Selle lahendasin selliselt:

javascript:
  1. var tags=document.getElementsByTagName("a");
  2. var n=tags.length;
  3. for(x=0;x<n;x++){
  4. if(document.getElementsByTagName("a")[x].innerHTML=='LiivaneLord'){
  5. document.getElementsByTagName('a')[x].innerHTML='Olavi';
  6. }
  7. }
  8.  
  9. var tags2=document.getElementsByTagName("a");
  10. var n2=tags2.length;
  11. for(x=0;x<n2;x++){
  12. if(document.getElementsByTagName("a")[x].href=='javascript:emoticon(\'[b]LiivaneLord[/b],\')'){
  13. document.getElementsByTagName('a')[x].href='javascript:emoticon(\'[b]Olavi[/b],\')';
  14. }
  15. }


Proovin veel asju ... icon_razz.gif

EDIT: Aga siiski, kuidas neid skripte ainult ühel ja konkreetsel lehel käivitada?
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 22.12.2012 17:19:43 vasta tsitaadiga

tsitaat:
EDIT: Aga siiski, kuidas neid skripte ainult ühel ja konkreetsel lehel käivitada?

Loe minu postis toodud link läbi, seal selgitatakse.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 22.12.2012 18:00:03 vasta tsitaadiga

andrusny, mh, huvitav. Enne proovisin seda ja siis ei toiminud, aga nüüd toimib. thumbs_up.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Foxreplace'ga HTML koodi asendades HV foorumis kasutajanimel klikates see tekstikasti ei ilmu
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.