Avatar billede prdk Nybegynder
05. juli 2002 - 23:53 Der er 8 kommentarer og
1 løsning

Hvordan identificerer man ordet der klikkes på i IE5.5+?

Jeg savner at finde ud af hvordan man identificerer det ord brugeren klikker på - enten med venstre eller højre museknap (IKKE dobbeltklik). Resultatet skal bruges til syntetisk tale (oplæsning).
Avatar billede hells Nybegynder
06. juli 2002 - 00:11 #1
Med dette kan du finde ud af, om det er højre eller venstre museknap:

<html>
<head>

<script type="text/javascript">
function whichButton()
{
if (event.button==1)
{
alert("Left mouse button was clicked!")
}
else
{
alert("Right mouse button was clicked!")
}
}
</script>
</head>

<body onmousedown="whichButton()">

<p>
Click somewhere in the document. An alert box will alert which mouse button you clicked.
</p>

</body>
</html>
Avatar billede hells Nybegynder
06. juli 2002 - 00:11 #2
ved ikke om det er det du leder efter
Avatar billede Noone Nybegynder
06. juli 2002 - 00:54 #3
Tror kun du kan gøre det ved at lave alle ord til links...

Som det her:

<script>
function det_der_skal_ske(word) {
  Noget javascript kode
}
</script>

<a href="#" onclick="det_der_skal_ske('Hej');">Hej</a>

Hård arbejde med mindre du kan scriptet dig ud af det server side.
Avatar billede =maddog= Nybegynder
06. juli 2002 - 04:12 #4
Når vi to ser
<b> Her står en masse tekst </b>
er vi begge to intelligente nok til at se at der er 5 ord med fed skrifttype, men så klog er en computer desværre ikke. det ser kun
<b (I MUST RENDER THIS NODE BOLD)> DATA (THIS DATA MUST BE RENDERED BOLD) </b (I MUST STOP RENDERERING BOLD AND FINALIZE THIS NODE)>
Vi kan sagtens få fat i den data, der er i mellem <b></b>, men vi kan ikke få den til at forstå hvad der er enkelte ord og ikke.
Under alle omstændigheder ser et bud på en kode således ud:
<script>
    document.onclick = function(e) {
    target = (document.all)?event.srcElement.firstChild:(document.getElementById)?e.target:null;
    if (target!=null&&target.nodeType==3) alert(target.data);
    }
</script>
Håber det er til hjælp.
Avatar billede prdk Nybegynder
08. juli 2002 - 21:37 #5
Tak til maddog for budet - det bedste indtil videre. Betyder det virkelig at jeg ikke kan slippe for at gøre hvert ord til et objekt? Jeg ville gerne om det var muligt blot at finde indholdet af eksempelvis ord nummer 3 i en given <span>-tag ... any takers?
Avatar billede =maddog= Nybegynder
08. juli 2002 - 21:47 #6
jamen det er da muligt at spalte det man får op i enkelte ord. Vi kan bare ikke vide hvilket ord der er klikket på.
Øjeblik så laver jeg en lækker lækker StringTokenizer til dig.
Tager nok en ½times tid.
Avatar billede hells Nybegynder
08. juli 2002 - 22:05 #7
En løsning(dog nok ikke den bedste) i vbscript:
<span id="mitid">find det tredje ord tekst</span>

<br />

<script type="text/vbscript">
tredjeord = mitid.innerHTML
ordarray = Split(tredjeord," ")
document.write ordarray(2)
</script>
Avatar billede =maddog= Nybegynder
08. juli 2002 - 22:33 #8
<script>
function StringTokenizer(Str) {
    this.buffer = (Str+"").split(' '); // array af ord
    this.count = -1; // start the parser below the array
}
StringTokenizer.prototype.next = function() {
    if (this.count>=this.buffer.length-1) return false;
    this.count++; // move forward
    return this.buffer[this.count]; // return the token
}
StringTokenizer.prototype.nextWord = function() {
    if (this.count>=this.buffer.length-1) return false;
    this.temp = this.next().replace(/[^A-Za-zæøåÆØÅ]/g,''); // return the token clear of non letters
    if (this.temp=="") return this.nextWord(); // lidt rekurtion for de vilde
    else return this.temp;
}
StringTokenizer.prototype.tokenAt = function(num) {
    return this.buffer[num]; // return the token at the index
}
StringTokenizer.prototype.wordAt = function(num) {
    return this.buffer[num].replace(/[^A-Za-z]/g,'');
}
StringTokenizer.prototype.load = function(Str) {
    this.buffer = Str.split(' ');
    this.count = -1;
}

// anvendelser
var word = "2";
document.onclick = function(e) {
    target = (document.all)?event.srcElement.firstChild:(document.getElementById)?e.target:null;
    if (target!=null&&target.nodeType==3) {
          var sT = new StringTokenizer(target.data);
        i=0
        while (word && i!=3) {
            word = sT.nextWord();
            i++;
        }// gennem løber alle ord til ord 3.
        alert(word);
    }
}
// man kan selvfølgelig gå ind og kigge på st.buffer[3], men ved denne metode kan vi effektivt frasortere sludder løbende.
</script>
Avatar billede =maddog= Nybegynder
11. juli 2002 - 18:42 #9
nu ligger jeg et svar. bare for god ordens skyld. hvis du ikke føler problemet er ordentligt løst skal du bare tage pointene tilbage.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester