Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  JS TextEditor 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:  
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 07.02.2009 17:40:10 JS TextEditor vasta tsitaadiga

Proovin JS text editori teha. Mul on põhimõtteliselt töötav editor, kuid jäin probleemi taha, kuidas seada kursori positsiooni nähtaval lehel. Hetkel html kood on mul textarea sees ja selle kuvan välja div sisse

document.getElementById('sisu').innerHTML=document.getElementById('sk').value;


Nüüd on selle div sees selle html visuaalne väljund. Kuidas ma aga nüüd seal visuaalse peal saaksin näidata, kus kohas kursor textareas asub? Näiteks on seal kiri : Mine metsa ja ma tahaks panna kursori nende kahe sõna vahele. On sellele mingi lihtsamat sorti lahendus?

Minu hetke seis: Edit

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

liitunud: 20.03.2004




sõnum 07.02.2009 17:56:33 vasta tsitaadiga

document.getElementById('sisu').contentEditable = true;

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 07.02.2009 18:27:38 vasta tsitaadiga

Aitäh. Toimib, kuid nüüd tuleb selline probleem, et kui seal teen reavahetuse, teeb ta koodis <p></p> nagu uue paragrahvi ja rea vahe jääb suur. See viga vist ka teistes txtEditorides, kuna olen sama asja täheldanud, et reavahed on laiad. Kas seda kuidagi saaks muuta, et enter vajutades ei tekitaks uut p vaid paneks lihtsalt br vahele. Ma saaks muidugi teha funk, mis leiab peale enteri vajutust selle <P>&nbsp;</P> mis ta sinna teeb ja koheselt asendaks selle BR tagiga kuid ehk on mingi teine tee veel olemas.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 07.02.2009 18:35:52 vasta tsitaadiga

Kui vajutad Shift+Enter, siis sisestab vaid reavahetuse.
_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 07.02.2009 23:18:38 vasta tsitaadiga

Ei saa mitte vaiki olla...
Olen otsinud kuidas märgitud tekstiosa positsiooni määrata, kõik näited on nagu ühtemoodi, kuid mul nad ei tööta, ütleb, et Object does&#324; t support this method

function sel(){
var range= window.getSelection().getRangeAt(0);
alert('Current position: '+range.startOffset+' inside '+range.startContainer);
range.setStart(newParent, textOffset);
range.setEnd(newParent, textOffset);
}

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

liitunud: 20.03.2004




sõnum 08.02.2009 15:37:38 vasta tsitaadiga

Proovi sedasi, et lood uue Range objekti, mitte ei muuda vana:

// create new range
var range = document.createRange();
range.setStart(parent, offset);
range.setEnd(parent, offset);

// remove old ranges and add the new one
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 08.02.2009 17:08:53 vasta tsitaadiga

Aitäh, see toimib, kuid tuleb mängu jällegi IE Vs. FF
window.getSelection();
on ainult FF ja Opera toetusega. Nad ei saa kohe kuidagi kokkuleppele, kuidas asjad toimima peavad. Ometi on mul juba IE 8 peal.
Edit:
Hetkel proovisin, ka minu enda eelmine funktsioon toimib Operas normaalselt.

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

liitunud: 20.03.2004




sõnum 08.02.2009 18:12:42 vasta tsitaadiga

Kogu see värk näikse olevat suht paras keemia. Kuid paistab, et see Quirksmode'i artikkel seletab asjad üsna põhjalikult lahti.
_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 10.02.2009 18:45:08 vasta tsitaadiga

Üks võibolla väga rumal küsimus, kas JAvaScript värve tunneb? Klik elemendil ja annab värvi koodi. Veel parem klikk pildil ja annab värvi koodi. Style kaudu võtmist tean
document.getElementByID().style.background

kuigi tundub, et kui see on antud ette ennem css osas siis ma seda kätte ei saa vaid ainult siis, kui see on elemendile liidetud style=""

Kuid ikkagi kas ta otse on võimeline värvi tuvastama?

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

liitunud: 26.01.2005




sõnum 10.02.2009 18:54:40 vasta tsitaadiga

Miski selline javascripti func on:

function getComputedStyleForElement (element, cssPropertyName) {
  if (element) {
    if (window.getComputedStyle) {
      return window.getComputedStyle(element, '').getPropertyValue(cssPropertyName.replace(/([A-Z])/g, "-$1").toLowerCase());
    } else if (element.currentStyle) {
      return element.currentStyle[cssPropertyName];
    } else {
      return null;
    }
  } else {
    return null;
  }
}


koodijupi leidsin siit: http://bytes.com/groups/javascript/92839-access-css-javascript google otsisõnadeks, mille kaudu leidsin, olid: javascript access css properties

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 10.02.2009 19:10:13 vasta tsitaadiga

Siin Quirksmode'i lehel on veidi seletatud kuidas saada erinevate DOM-i elementide stiilide väärtusi. Aga sedapidi ei anna välja lugeda suurt muid värve kui teksti, tausta ja serva värvid. Tuvastada, kas klikiti serva või tausta peale on vast võimalik. Vahet teha kas klikiti tekstis tähele või mööda, suht lootusetu ettevõtmine.

Piltidega on asi samuti suht nigel, sest JavaScript ei võimalda pildi pikselitele ligi pääseda. On küll võimalik kopeerida pilt <canvas> elemendi peale ning siis vaadelda canvase pikseleid. Aga <canvas> pole muidugi IE poolt toetatud.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 10.02.2009 20:23:48 vasta tsitaadiga

Kui väga tahta, siis saab ju JS'ga välja uurida kliki hetkel hiire asukohta, antud lingi/pildi asukohta ja siis natuke arvutamist teha ja saadki teada mis piksli peale klikiti icon_wink.gif
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 11.02.2009 00:59:58 vasta tsitaadiga

Tänud, eks ma uurin neid lehti.

Sortisin siis nendest välja vast kõige optimaalsema funktsiooni, mis võtab ById või class järgi ja toimib kõgis kolmes browseris.
Üks oli veel viisakama koodiga, kuid toimis ainult IE ja Opera


// **************** css osa ****************
#aDiv {
color: darkgreen;
background-color: lightgreen;
height: 200px;
}

// ************** JS ******************

function getStyleObjectFromSelector (selectorText) {
if (document.styleSheets) {
for (var i = document.styleSheets.length - 1; i >= 0; i--) {
var styleSheet = document.styleSheets[i];
var rules;
if (styleSheet.cssRules) {
rules = styleSheet.cssRules;
}
else if (styleSheet.rules) {
rules = styleSheet.rules;
}
if (rules) {
for (var j = rules.length - 1; j >= 0; j--) {
if (rules[j].selectorText == selectorText) {
return rules[j].style;
}
}
}
}
return null;
}
else {
return null;
}
}
//****************** Väljund ***************

var height = getStyleObjectFromSelector ('#aDiv').height;



Edit:
Kas JS tekitatud dive loetb browser kuidagi teistsugusteks kehadeks? Genereerisin värvi tabeli JS abil panin igale peale onclick funtioni, mis selle värvi koodi mulle ühte hidden välja viskab. Nüüd document.execCommand("ForeColor", false, document.getElementById('rg3').value); sellega teen editoris teksti värviliseks, kuid kui selle käsu panen jooksma sealt samast onklick käsust, siis jookseb kinni, kui teen selle jaoks eraldi nupu, siis töötab. Midagi on totaalselt segi. Hetkel lahendus selline

DEMO

Hetkel siis nii, et valid esmalt värvi, siis märgistad vajaliku tekstiosa ja siis vajutad seda suurt T tähte

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  JS TextEditor
[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.