/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Kan man dele lange ord?
Fra : MT


Dato : 02-02-09 19:52

Jeg trækker tekst fra en database ind i en tabel. Hvordan ungår
jeg at tabellen skrider hvis nogen feks. har indtastet: !!!!!!!
200 gange? Beklager hvis det ikke er den rigtige gruppe at spørge
i.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Rune Jensen (03-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 03-02-09 02:41

MT skrev:
> Jeg trækker tekst fra en database ind i en tabel. Hvordan ungår
> jeg at tabellen skrider hvis nogen feks. har indtastet: !!!!!!!
> 200 gange? Beklager hvis det ikke er den rigtige gruppe at spørge
> i.

Jeg er selv i gang med at undersæge det til eget projekt.

Jeg kan ikke levere hele løsningen, men bare nogle forslag, som jeg har
overvejet - ingen af dem testet fuldt endnu:


1.
Jeg ville umiddelbart bruge RegExp til at sætte en ­ ind, hvis to på
hinanden følgende karakterer er ens, og et ord er længere, end et
bestemt antal karakterer. Det er et "blødet" mellemrum, som kun kommer
til udtryk, hvis et ord er for langt - så skilles det og der kommer en -
der hvoor der er det nærmeste ­ som ikke gør, at linjen overskrides *).

2.
Man kan mned RegExp teste længden af hvert ors, og indsætte en (...),
hvis det er for langt. Det kan mig bekendt ikke laves optimaLt uden om
en RegExp, da hvert ord jo skal testes.

Eller en kombination af de to - vil måske være smartere.

­ virker ikke helt i alle browsere - desværre.


Jeg er faktisk ikke klar over, om der findes en ren CSS-mulighed. Eller,
dvs. dem, som findes, er jeg ikke klar over, hvor meget de er supported,
men her er lidt info
http://www.css3.info/preview/word-wrap/
Det er en CSS3-ting.
Under alle omstændigheder duer den nok kun som fall-back.

Der er (måske) mulighed for at laves noget yderligere på en overflox-x.
Der kan man så bruge CSS-egenskaben :after.

Ovenstående er sådan lidt "måske", fordi visse pseudo-egenskaber ikke
virker i f.eks. IE6 (hvis man stadig vil have den med).

En helt simpel løsning (som jeg vil sige, måske er at snyde lidt), det
er at bruge overflow-x:clip. Du kan også lave en horisontal scroll-bar,
hvis linjen overskrides med overflow-x:auto. Det har jeg i øjeblikket,
og det ser gyseligt ud;)

Men prøv evt. at spørge også i webdesign.html-gruppen også. Vær
opmærksom på, de vil nok bede om et link til din side.

NOTE:
*) Jeg bruger denne hjemmeside til Regular Expressions:
http://www.regular-expressions.info/lookaround2.html



MVH
Rune Jensen

Rune Jensen (03-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 03-02-09 03:58

Rune Jensen skrev:
(...)
> Det kan mig bekendt ikke laves optimaLt uden om
> en RegExp, da hvert ord jo skal testes.

Hvis nu det ikke er alverden, du vil indsætte, kan du evt. bruge split()
function. Jeg er ikke sikker på, den vil være ligeså optimal, men her er
et (utestet) eksempel:


function VerifyText(text,wordlenght)
Dim t, tAr, tJ
Dim wl
Dim i

   t=text
   wl=wordlenght

   t=Replace( Replace( Replace( Replace( t, chr( 13)," "), chr( 10), " "),
" ", " ")," ", " ")

   tAr=Split( t, " ")

   For i = 0 to uBound( tAr)
      if Len( tAr( i)) > wl Then
         If Len( tAr( i)) >5 Then
            tAr( i)= Left( tAr( i)), len( tAr( i))-4) & "[...]"   
         Else
            tAr( i)= "[...]"
         End if
      End If
   Next

   VerifyText=Join( tAr," ")

End Function


Den kan så kaldes med:

response-write VerifyText( "et hulens langt ord:
ksjdhgkjsdhgkdsjhgfsdkjhgfksdjhgkjsdhg", 11)

Den kan udvides ved at indsætte span omkring det truncatede ord, og så
en title med ordet.

....igen, så er den nok ikke bedre end hvad man kan lave med regexp.

MVH
Rune Jensen

MT (03-02-2009)
Kommentar
Fra : MT


Dato : 03-02-09 21:14

Tak for dine input Rune.
Jeg har ikke haft tid til at teste men det kommer.
I min søgen er jeg stødt på dette: http://www.eksperten.dk/spm/252794


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Rune Jensen (04-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 04-02-09 02:45

MT skrev:
> Tak for dine input Rune.
> Jeg har ikke haft tid til at teste men det kommer.
> I min søgen er jeg stødt på dette: http://www.eksperten.dk/spm/252794

Det ser også ud som et godt bud.

Jeg har udbygget og testet mit script, så koden ser ud som følger:

function VerifyText(text,wordlenght)
Dim t, tAr, tJ
Dim wl
Dim i

t=text
wl=wordlenght

t=Replace( Replace( Replace( Replace( t, chr( 13)," "), chr( 10), "
"), " ", " ")," ", " ")

tAr=Split( t, " ")

For i = 0 to uBound( tAr)
if Len( tAr( i)) > wl and wl> 6 Then
If Len( tAr( i)) >5 Then
tAr( i)= Left( tAr( i), wl-5) & "<small title=" & chr(
34) & tAr( i) & chr( 34) & ">[...]</small>"
'Else
' tAr( i)= "[...]"
End if
End If
Next

VerifyText=Join( tAr," ")

End Function

Der kan sættes en lille CSS for small-tagget, f.eks.

small{
   cursor: help:
}
   
....så vil man få et spørgsmålstegn, når man hover over [...] - hover man
så, kan man se hele ordet (hvilket nok er et must).

Test her, nederst (uden CSS):
http://runejensen.dk/om/testside.asp


MVH
Rune Jensen

Stig Johansen (04-02-2009)
Kommentar
Fra : Stig Johansen


Dato : 04-02-09 03:18

Rune Jensen wrote:

> Test her, nederst (uden CSS):
> http://runejensen.dk/om/testside.asp

Det har ikke så meget med tråden at gøre, men jeg klikkede på dit link, og
får 'status 64'.

så teksten:
bit 6; værdi 64 ; Referrer er tom - kan være fra bogmærke eller
adresselinjen
kan du udvide med 'eller news client'.

--
Med venlig hilsen
Stig Johansen

Rune Jensen (04-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 04-02-09 04:34

Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Test her, nederst (uden CSS):
>> http://runejensen.dk/om/testside.asp
>
> Det har ikke så meget med tråden at gøre, men jeg klikkede på dit link, og
> får 'status 64'.
>
> så teksten:
> bit 6; værdi 64 ; Referrer er tom - kan være fra bogmærke eller
> adresselinjen
> kan du udvide med 'eller news client'.

Det tog ikke lang tid;)


MVH
Rune Jensen

Birger Sørensen (04-02-2009)
Kommentar
Fra : Birger Sørensen


Dato : 04-02-09 03:26

Efter mange tanker skrev Rune Jensen:
>
> ...så vil man få et spørgsmålstegn, når man hover over [...] - hover man så,
> kan man se hele ordet (hvilket nok er et must).
>
> Test her, nederst (uden CSS):
> http://runejensen.dk/om/testside.asp

Blot kommentarer og strøtanker.

Skift af cursoren, sker ikke ved hover men ved mouseover. Hover kræver
at musen holdes stille et stykke tid over elementet.
Det er så ved hover at title bliver vist - i hvert fald i IE7 -, og
desværre fjernes title igen forholdsvis hurtigt. I det her tilfælde så
hurtigt, at jeg ikke når at læse den lange tekst. Yderligere er der så
den ulempe, at den samme title ikke vises igen, før efter en anden
title har været vist. Jeg skal altså ud og finde et andet element der
har en title, og tilbage til den afkortede tekst - hvor jeg så skal
finde der jeg nåede til, og få læst resten, inden det forsvinder igen.
Så bedre end ingenting, men ikke en ideel løsning

Der findes funktioner i dom, der returnerer størrelsen af
text-rektangler i et element.
element.getClientRects : Returns a collection of rectangles that
indicate the bounding rectangles for each line of text in a client.
Så skal man godt nok over på clientside - men reelt ved du alligevel
ikke om der er plads før. I hvert fald kan man godt forestille sig
tilfælde hvor det er sådan.
Ved at spørge på størrelsen af rektanglerne, og sammenligne med den
størrelse der er til rådighed, og evt. et max linieantal, kunne man
afkorte de tekster (måske blot med overflow : clip;? - men så er der
ingen indikation af at teksten er afkortet - en lidt anderledes farve,
måske), der ikke er plads til, og vise dem med en title - eller bedre
et "rigtigt note element" der bliver så længe musen holdes over det, så
man har en chance for at læse det.
Man kunne også forestille sig, at man forsøgte at gøre fonten mindre,
før man erstattede - kombineret med en "popup" der har hele teksten,
kunne det også være en løsning.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Rune Jensen (04-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 04-02-09 04:33

Birger Sørensen skrev:
> Efter mange tanker skrev Rune Jensen:
>>
>> ...så vil man få et spørgsmålstegn, når man hover over [...] - hover
>> man så, kan man se hele ordet (hvilket nok er et must).
>>
>> Test her, nederst (uden CSS):
>> http://runejensen.dk/om/testside.asp

<SNIP>

> Der findes funktioner i dom, der returnerer størrelsen af
> text-rektangler i et element.
> element.getClientRects : Returns a collection of rectangles that
> indicate the bounding rectangles for each line of text in a client.
> Så skal man godt nok over på clientside - men reelt ved du alligevel
> ikke om der er plads før. I hvert fald kan man godt forestille sig
> tilfælde hvor det er sådan.

<SNIP>

Jeg havde sådan en lumsk anelse om, at JS ville være næste step;)

Så kunne det jo være interessant at kombinere det med en unobtrusive
event (som jeg af forskellige grunde ikke har haft alt for meget til at
gå videre med - undskyld, jeg skal vende tilbage) - men men men...

Er det muligt i JS at få fat i selve title til tagget? Og eventuelt
manipulere med det, størrelse/position/indhold?

Jeg har nogle andre idéer også, men det vil involvere en <span> (eller
andet inline-element) sat som block-element og absolute positioned, samt
z-index... måske. Men ikke videre logisk i hvert fald på et inline
element, så JS er nok smart lige her (det vil virke i IE6 osse...).


MVH
Rune Jensen

Birger Sørensen (04-02-2009)
Kommentar
Fra : Birger Sørensen


Dato : 04-02-09 12:29

Efter mange tanker skrev Rune Jensen:
> Birger Sørensen skrev:
>> Efter mange tanker skrev Rune Jensen:
>>>
>>> ...så vil man få et spørgsmålstegn, når man hover over [...] - hover man
>>> så, kan man se hele ordet (hvilket nok er et must).
>>>
>>> Test her, nederst (uden CSS):
>>> http://runejensen.dk/om/testside.asp
>
> <SNIP>
>
>> Der findes funktioner i dom, der returnerer størrelsen af text-rektangler i
>> et element.
>> element.getClientRects : Returns a collection of rectangles that indicate
>> the bounding rectangles for each line of text in a client.
>> Så skal man godt nok over på clientside - men reelt ved du alligevel ikke
>> om der er plads før. I hvert fald kan man godt forestille sig tilfælde hvor
>> det er sådan.
>
> <SNIP>
>
> Jeg havde sådan en lumsk anelse om, at JS ville være næste step;)
>
> Så kunne det jo være interessant at kombinere det med en unobtrusive event
> (som jeg af forskellige grunde ikke har haft alt for meget til at gå videre
> med - undskyld, jeg skal vende tilbage) - men men men...
>
> Er det muligt i JS at få fat i selve title til tagget? Og eventuelt
> manipulere med det, størrelse/position/indhold?
>
> Jeg har nogle andre idéer også, men det vil involvere en <span> (eller andet
> inline-element) sat som block-element og absolute positioned, samt z-index...
> måske. Men ikke videre logisk i hvert fald på et inline element, så JS er nok
> smart lige her (det vil virke i IE6 osse...).
>
>
> MVH
> Rune Jensen

Det var ikke for at skubbe nogen i gang med noget - jeg har ikke selv
tid lige pt. og heller ikke rigtig brug for det. Men det kan man jo
ikke vide, om man får...

Hvis du har elementet, burde title da kunne findes som elm.title.
Men det er selvfølgelig ikke det elementet der vises, kun teksten.
Elementet tror jeg ikke umiddelbart man kan hverken bruge eller finde.
Det eksisterer formentlig kun når det bliver vist.
Og rent design, tror jeg det er det samme der "genbruges" til alle
"titles".
Og den tanke var måske også værd at overveje.

Der har for ikke så længe siden været et spørgsmål omkring det med
"title" - en sprogside.. kan ikke lige huske det præcist - der faktisk
havde sine egne "titles".
En popup med en forklaring, ved hover eller klik.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Rune Jensen (15-02-2009)
Kommentar
Fra : Rune Jensen


Dato : 15-02-09 01:46

Birger Sørensen skrev:

> Hvis du har elementet, burde title da kunne findes som elm.title.
> Men det er selvfølgelig ikke det elementet der vises, kun teksten.
> Elementet tror jeg ikke umiddelbart man kan hverken bruge eller finde.
> Det eksisterer formentlig kun når det bliver vist.

Tænkte jeg nok. Det skal jo heller ikke være for nemt, vel;)

> Og rent design, tror jeg det er det samme der "genbruges" til alle
> "titles".
> Og den tanke var måske også værd at overveje.

Jeg skal se på det

> Der har for ikke så længe siden været et spørgsmål omkring det med
> "title" - en sprogside.. kan ikke lige huske det præcist - der faktisk
> havde sine egne "titles".
> En popup med en forklaring, ved hover eller klik.

Foreløbig, skal jeg lige tænke over, hvordan man nemmest undgår
fyldkode. Der er også noget med den rækkefølge, som tingene sker i, jeg
ikke er helt sikker på.

En popup lyder som en måske ret god idé, rimelig simpel, også
forholdsvist nemt at implementere - her skal jeg så lige overveje det
med fyldkoden og genbrug. Jeg har ærligt ikke tænkt så langt endnu.

Jeg har foreløbig opdateret scriptet, så det kan behandle truncating af
hele teksten også, samt lavet remarks og beskrivelser af virkemåden.

Interesserede kan kigge på:
http://runejensen.dk/om/truncate_v1.txt


MVH
Rune Jensen

--
WinAMP lige nu: 1Club.fm House and Dance

MT (06-02-2009)
Kommentar
Fra : MT


Dato : 06-02-09 19:59

Hej Rune
Jeg har nu testet dit script og det virker efter hensigten og løste mit
problem.
1000 tak for det!
Mvh.
Michael

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177425
Tips : 31962
Nyheder : 719565
Indlæg : 6407916
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste