Jag har ett ganska pilligt problem, jag bygger en community och kjag har där i en meddelande funktion. Problemet är att jag vill ha samma standard i den som det är i e-post program alltså att man får med det gammla meddelandet och det är såna här > pilar inan det gamla och då för varje "reply" så lägger den till en pil.
Jag har byggt ett sånt här med lite Regular expressions och stuff men jag har allri fått det ricktigt att funka perfekt .. antigen så klipper det bort ord .. eller så kommer > den på fel rad eller så blir det helt skumt .. ;)
Men jag förstår att ingen orkar sitta och skriva en hel sån här funktion åt mig men om nån råkar veta nåt ställe där man kan läsa om hur man kan göra en sån här på ett bra sätt .. eller om nån här har gjort en sån och man kan få titta på koden.
Det svåra är ju att en webläsare fyller på koden dynmiskt. Vad du skulle kunna göra är att köra med en fixed-width font och sen styra bredden på containern där du har texten.
Jag gjorde något enklare till ett community jag också gjort. "Alla verkar göra det!!!!" :) http://www.cyprys.com/necc/
Sidan är typ nerlagd eller nått.
Men vad jag gjorde var att när du skrev inte det gamla meddelandet så tar du meddelandet du svarar på och inkluderar det i SQL-satsen.
Ungefär:
Hur du ska lösa det med > framför gamla meddelanden vet jag faktiskt inte. Byta färg på dem eller annat går ju men väntar med nyfikenhet på någon som kanske kan. :)
Du kan ju ha en tom td med rowspan, och för varje rad kollar du om det är reply eller ny, och om det är reply på reply och isåfall sätter du dit så många pilar som det skall vara i den td'n som du lägger till vänster, men som egentligen inte syns.
Jag kom att tänka på en tänkbar lösning på din fråga:
Om du tar och infogar <br> plus > efter x antal tecken i strängen och repeterar det tills strängen är slut.
Jo det är nog sant. Om man inte tar bort alla gamla <br> innan :) Men jag kom på en annan sak som jag inte tänkte på och det var att det lär bli en hel del ord som blir brutna mitt i. Det måste ju gå att hitta en smidig lösning på det här tycker jag.
Man kan ju bygga en funktion som plockar ut alla ord (inklusive alla <br> ) och slänger in i en array. För att sedan köra if satser i funktionen för hur arrayen skall presenteras på sidan.
Eftersom om ett ord innehåller 40 tecken kanske man måste köra en <br> ändå osv.
Det är lurigt, men det går ju att lösa :)
Nu är det ju frågan om man verkligen skap pilla i ord som är för långa. Om man inte ska det kan man göra så här. Jag gjorde en funktion som radbryter text efter ett viss antal tecken. Det är en rekursiv funktion som bara bryter texten en gång, och sedan läggen ihop den brutna delen med resultatet av att kalla funktionen med det som återstår.
Sedan splittar man resultatet till en array (med vbcrlf som avgränsare) och loopar ut raderna med > framför. Man skulle också kunna lägga till en vbcrlf framför strängen och helt enkelt köra en replace(strängen,vbcrlf,<BR>>)
rows=split(Wrap(texten,10),vbcrlf)
for each row in rows
response.write "> " & row & "<BR>"
next
Function Wrap(InString, Width)
Dim intLen,intPosRev,intPosFwd
intLen = Len(InString)
intPosRev=instrrev(InString," ",Width,1)
intPosFwd=instr(InString," ")
if Width>=intLen then
Wrap=InString
elseif intPosFwd=0 then
if intPosRev>0 then
Wrap=left(InString,intPosRev) & vbcrlf & Wrap(Right(InString,intLen-intPosRev),Width)
else
Wrap=InString
end if
else
Wrap=left(InString,intPosFwd) & vbcrlf & Wrap(Right(InString,intLen-intPosFwd),Width)
end if
End Function
271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e