[Javascript] selectie van tekst uitlezen

Pagina: 1
Acties:
  • 482 views sinds 30-01-2008
  • Reageer

  • Sjoerd
  • Registratie: December 2003
  • Niet online
ik ben hier al een tijdje mee bezig:

onder firefox gebruik ik het volgende:

JavaScript:
1
2
var selectedText = 
document.getElementById('wysiwyg_textarea').contentWindow.document.getSelection(); 


Dit werkt perfect, in IE werkt dit niet omwille van het feit dat getSelection niet wordt ondersteund.
wat echter wel ondersteund wordt is "createRange" echt lukt het me maar niet om dit zo te gebruiken dat ik ook effectief de waarde van mijn selectie terug krijg.

Heb verschillende topics doorgespit:
[Javascript] Selectie in textarea
[JS - HTML] WYSIWYG - editor

en verwijzingen naar sites:
http://developer.mozilla....egory:Gecko_DOM_Reference
http://developer.mozilla.org/en/docs/Midas

Echter kom ik er dus nog niet uit om een stukje code te creeeren waarmee ik de inhoud van men selectie terug krijg. Zou iemand kunnen helpen met wat zoekwoorden desnoods ;)
de editors die ik al heb bekeken die dit wel goed gebruiken blijken erg ingewikkeld opgebouwd en zijn lastig te ontleden

Modelbouw - Alles over modelbouw, van RC tot diorama


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

FF geen tijd, maar zit er hier geen crossbrowser stuk hier: http://www.quirksmode.org/dom/range_intro.html?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02-2025

Bozozo

Your ad here?

JavaScript:
1
document.selection.createRange().text


Volgens mij ben je daarnaar op zoek :)

TabCinema : NiftySplit


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Bozozo schreef op vrijdag 16 november 2007 @ 15:48:
JavaScript:
1
document.selection.createRange().text


Volgens mij ben je daarnaar op zoek :)
Het zag er ook te mooi (simpel) uit om waar te zijn :)
krijg een lege alert terug (had hem binnen een alert gezet) jammer :)


@BtM909

eventjes afprinten en er naast leggen om door te nemen
edit: zojuist even de 2 voorbeeld codes geprobeerd:

JavaScript:
1
2
3
4
5
6
7
8
var userSelection;
if (window.getSelection) {
    userSelection = window.getSelection();
}
else if (document.selection) { // should come last; Opera!
    userSelection = document.selection.createRange();
}
alert(selectedText)


en het volgende wat de inhoud zou moeten weergeven

JavaScript:
1
2
3
4
 
var selectedText = userSelection;
if (userSelection.text)
    selectedText = userSelection.text;


Echter krijg ik in beide gevallen in IE een een alert met de boodschap [object]
terug en in Firefox een alert die leeg is :)

even verder zoeken nog

[ Voor 43% gewijzigd door Sjoerd op 16-11-2007 16:33 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02-2025

Bozozo

Your ad here?

Het zou echt moeten werken. Post even een volledige voorbeeldcode, misschien zit de fout in iets anders dan het bemachtigen van de selection text.

TabCinema : NiftySplit


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Bozozo schreef op vrijdag 16 november 2007 @ 17:58:
Het zou echt moeten werken. Post even een volledige voorbeeldcode, misschien zit de fout in iets anders dan het bemachtigen van de selection text.
oke :) relevante code
Het eigenlijke 'element' dat ik gebruik

HTML:
1
<iframe id="wysiwyg_textarea" src="{filename_random}"></iframe>


Even extra toevoegingen
JavaScript:
1
2
3
4
function maak_frame(){
document.getElementById('wysiwyg_textarea').contentWindow.document.designMode = "on";
document.designMode('styleWithCSS', false, false); //verkrijg mooie css opmaak
}


En dan uiteindelijk proberen een selectie te verkrijgen
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function test(){
//HIER ZORGEN DAT IK EINDELIJK EEN SELECTIE KAN KRIJGEN VAN ZOWEL IE ALS FF
var userSelection;
if (window.getSelection) {
    userSelection = window.getSelection();
}
else if (document.selection) { // should come last; Opera!
    userSelection = document.selection.createRange();
}

var selectedText = userSelection;
if (userSelection.text)
   selectedText = userSelection.text;
    
alert(selectedText)
}



Alles bij elkaar :) (helemaal uitgekleed maar het zou zo moeten werken denk ik
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
<head>
<script language="javascript" type="text/javascript">
function maak_frame(){
document.getElementById('wysiwyg_textarea').contentWindow.document.designMode = "on";
document.designMode('styleWithCSS', false, false); //verkrijg mooie css opmaak
}
function test(){
//HIER ZORGEN DAT IK EINDELIJK EEN SELECTIE KAN KRIJGEN VAN ZOWEL IE ALS FF
var userSelection;
if (window.getSelection) {
    userSelection = window.getSelection();
}
else if (document.selection) { // should come last; Opera!
    userSelection = document.selection.createRange();
}
var selectedText = userSelection;
if (userSelection.text)
   selectedText = userSelection.text;
alert(selectedText)
}
</script>
</head>
<body onload="maak_frame()">
<iframe id="wysiwyg_textarea" src="{filename_random}"></iframe>
<a href="#" onclick='test()'>test</a>
</body>
</html>

[ Voor 29% gewijzigd door Sjoerd op 16-11-2007 18:32 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02-2025

Bozozo

Your ad here?

Ik heb even een werkend voorbeeldje neergezet op http://arno.fiberhosting.nl/selection.html
Ik heb niet uitgebreid getest wat nou het verschil maakt tussen jouw code en de mijne, maar hier werkt mijn scriptje in IE en FF.

TabCinema : NiftySplit


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Bozozo schreef op vrijdag 16 november 2007 @ 18:42:
Ik heb even een werkend voorbeeldje neergezet op http://arno.fiberhosting.nl/selection.html
Ik heb niet uitgebreid getest wat nou het verschil maakt tussen jouw code en de mijne, maar hier werkt mijn scriptje in IE en FF.
Die werkt hier inderdaad super :) bedankt!
ik ga even wat vergelijken en laat het weten, hm vanaf het moment dat ik jou code kopieer
in mijn projectje krijg ik weer een lege alert in ff en object in IE voorgeschoteld

ben nu dus zeker dat het ligt aan het iframe want buiten het iframe kan ik wel uitlezen wat er geselecteerd is...

[ Voor 22% gewijzigd door Sjoerd op 16-11-2007 19:03 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Ondertussen heb ik uitgevogeld dat wanneer ik volgend stukje code gebruik:

JavaScript:
1
2
3
4
5
6
7
8
9
    function sayselection() {
        if (document.selection) {
        var sel = document.selection.createRange().text;
      }
      else {
        var sel = document.getElementById('wysiwyg_textarea').contentWindow.getSelection();
      }
      alert(sel);
    }


Ik onder firefox in ieder geval mijn iframe kan uitlezen, nu IE nog :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Kleine kick nogmaals ;) ben er ondertussen nog altijd niet uit hoe ik dit onder IE werkend kan krijgen met mijn Iframe :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 23-01 11:40

killercow

eth0

Sjoerd schreef op zondag 18 november 2007 @ 11:41:
Kleine kick nogmaals ;) ben er ondertussen nog altijd niet uit hoe ik dit onder IE werkend kan krijgen met mijn Iframe :)
Heb me er verder niet echt in verdiept, maar ben je in je IE code niet gewoon het huidige document an het querien in plaats van je iframe?

Je vraagt namenlijk niet eerst je iframe op zoals je voor FF wel doet.

openkat.nl al gezien?

Pagina: 1