Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli

[es] :: Javascript i AJAX :: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli

[ Pregleda: 2145 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli27.08.2011. u 18:17 - pre 154 meseci
PROJEKAT: Vlaski on-line rečnik, MySQL, PHP, JavaScript
http://www.paundurlic.com/vlaski.recnik/ispravke-test.php

Na gornjem linku nalazi se test fajl sa javascript WYSIWYG_Editorom u koji sam ugradio paletu »dugmica« sa raznim sadrzajima koje je neophodno uneti u jedno »textarea« polje. Sve savršeno funkcioniše u IE, ali ne i u Mozilli, koja je, za baksuz, browser svih saradnika na projektu. Pokušao sam da za Mozillu prekrojim funkciju kojom se u tekstareu bez problema umeće tabela, ali mi nije do kraja uspelo. Pošto je rešenje za nas programere sluhiste previše komplikovano, molim za pomoć. Zadatak je dakle, urediti funkciju .. insert_element_mozilla() da radi u Mozilli onako dobro kao što u IE radi funkcija insertMyText(). (Nemojte me samo terati da "guglam", jer upravo odande dolazim, i to sav znojav! ;) )

Code:

/******************
* WYSIWYG_Editor:insertMyText
* umetanje karaktera u tekstareu editora na poziciji kursora
* savšreno radi u IE ali ne i u Mozilli 
****/
WYSIWYG_Editor.prototype.insertMyText = function (text, textarea) {
    
    if (this.isMSIE()) {
       document.getElementById(this.wysiwyg_content).contentWindow.focus();
       var znak = text;   
       var textarea=document.getElementById(this.wysiwyg_content).contentWindow.document.selection.createRange();
       textarea.pasteHTML(znak);
       document.getElementById(this.wysiwyg_content).contentWindow.focus();    
    } else {        
        textarea=document.getElementById(this.wysiwyg_content).contentWindow;
        this.insert_element_mozilla(textarea, text);
    }    
}


Funkcija koja dobro služi u Mozilli za unos tabele u textareu, i koja treba da se preradi da isto tako dobro unese i karakter na poziciju kursora:

Code:

/**
*   WYSIWYG_Editor::insert_element_mozilla
*   @param win prozor u koji se umece element
*   @param elem - element koji se umece u prozor
*   U editoru sluzi za unos tabele! 
**/
WYSIWYG_Editor.prototype.insert_element_mozilla = function (win, elem){
   
   var sel = win.getSelection();           // get current selection
   var range = sel.getRangeAt(0);          // 
   sel.removeAllRanges();                  // deselect everything //poništite sve
   range.deleteContents();                 // remove content of current selection from document                                                                                       
 
    var container = range.startContainer;  // get location of current selection -    
    var pos = range.startOffset;    
    range=document.createRange();          // make a new range for the new selection

    if (container.nodeType==3 && elem.nodeType==3) {
        // if we insert text in a textnode, do optimized insertion
        container.insertData(pos, elem.nodeValue); 

        // put cursor after inserted text - 
        range.setEnd(container, pos+elem.length);
        range.setStart(container, pos+elem.length);
    }else{
        var afterNode;
 
        if (container.nodeType==3) {
          //when inserting into a textnode we create 2 new textnodes and put the elem in between
          var textNode = container;
          container = textNode.parentNode;
          var text = textNode.nodeValue; 
          var textBefore = text.substr(0,pos);  // text before the split
          var textAfter = text.substr(pos);     // text after the split         
          var beforeNode = document.createTextNode(textBefore);
          var afterNode = document.createTextNode(textAfter);

          // insert the 3 new nodes before the old one
          container.insertBefore(afterNode, textNode);
          container.insertBefore(elem, afterNode);
          container.insertBefore(beforeNode, elem);
           // remove the old node
          container.removeChild(textNode);
 
        }else {
              
          // else simply insert the node
          afterNode = container.childNodes[pos];
          container.insertBefore(elem, afterNode);
        }
    }
}


 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli28.08.2011. u 11:42 - pre 154 meseci
Uspeo sam gotovo do pred sam kraj da resim problem unosa karaktera u Mozilli, eksperimentišuci sa funkcijom WYSIWYG_Editor.prototype.insert_element_mozilla (navedena u prethodnom topiku).
Pored IE gde i dalje editor savršeno radi, sada i Mozilla (konačno!) unosi željeni karakter na poziciji kursora.
U to se svako može uveriti odlaskom na link:
http://www.paundurlic.com/vlaski.recnik/ispravke-test.php

Ključne linije su definisanje textaree editora

textarea=document.getElementById(this.wysiwyg_content).contentWindow;

i instrukcija za unos znaka:

container.insertData(pos, text);

Ostaje još samo problem da se kursor vrati u polje textaree, odmah iza unetog karaktera.
To treba (čini mi se?) da urade ovi redovi:

range.setEnd(container, pos+text.length);
range.setStart(container, pos+text.length);


ali, na zalost, u mom slučaju, to ne biva, valjda zbog Marfija, šta li?
Kursor postaje vidiljiv tek kada ga unesem pomoću miša.
Šta više, to je jedini način da se kursor unese u textareu, jer posle unosa karaktera tastatura je mrtva!

Dakle, kako posle instrukcije
container.insertData(pos, text);
da vratim kursor na svoje mesto?

Evo funkcije koju sam ja nekako sklepao, i koju treba dodirnuti čarobnim štapićem, pa da sve proradi:

Code:

WYSIWYG_Editor.prototype.insertMyText = function (text, textarea) {
    
    if (this.isMSIE())
    {
    document.getElementById(this.wysiwyg_content).contentWindow.focus();
    var znak = text;   
    var textarea=document.getElementById(this.wysiwyg_content).contentWindow.document.selection.createRange();
    textarea.pasteHTML(znak);
    document.getElementById(this.wysiwyg_content).contentWindow.focus();
    
    } else {        
        textarea=document.getElementById(this.wysiwyg_content).contentWindow;
        
        var sel = textarea.getSelection();      // get current selection
        var range = sel.getRangeAt(0);          
        sel.removeAllRanges();                    // deselect everything //poništite sve
        range.deleteContents();                 // remove content of current selection from document                                                                                       
 
        var container = range.startContainer;   // get location of current selection -    
        var pos = range.startOffset;    
        range=document.createRange();           // make a new range for the new selection 
        container.insertData(pos, text); 
        
        // put cursor after inserted text - 
        range.setEnd(container, pos+text.length);
        range.setStart(container, pos+text.length);        
    }    
}
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli28.08.2011. u 12:20 - pre 154 meseci
Sasvim je blizu happy end ovog mog monologa!
Kursor sam uspeo da aktiviram, dodavanjem dva nova reda: sel.removeAllRanges(); i sel.addRange(range);, tako da kraj prethodne funkcije sada izgleda ovako:

Code:

        range.setEnd(container, pos+text.length);
        range.setStart(container, pos+text.length);  
        // 
        sel.removeAllRanges();
        sel.addRange(range);


Ostao je, međutim još jedan mali detalj koji treba da rešim(o) pa da otvorim šampanjac:
unos karaktera ne radi kada je polje textarea u editoru prazno!
Ne pomaže ni kad je kursor unet u polje, neophodno je da se preko tastature unese makar jedan "spejs" pa da sve proradi!
Uf!
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli28.08.2011. u 21:05 - pre 154 meseci
Radis li debuging? Sta kaze konzola? Verovatno je neki out of range, tj da vraca pogresnu poziciju kursora. Nevezano sta je, mozes da obicnim if to da resis:
Code (javascript):
if(textarea.length == 0) {....}
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli28.08.2011. u 21:55 - pre 154 meseci
Palo mi je to na pamet, ali mi nije "pao" i sadržaj tog "ifa"!
Nije lako kad je čoveka programer-naivac, verujte!
Po logici, utvrđivanje stanja "textaree" moguće je jedino neposredno posle njene definicije.
Dodao sam narečeni "if" i on uredno javlja kada je "textarea" prazna.
Šta tu treba da se napiše?
PS. Ne radim, na žalost, nikakav debuging, niti ostalo iz vašeg pitanja!

Code:
    
    } else {        
        textarea=document.getElementById(this.wysiwyg_content).contentWindow;

        if (textarea.length == 0) {
            alert ("Prazno!");
        } 

        var sel = textarea.getSelection();      
        var range = sel.getRangeAt(0);          
        sel.removeAllRanges();                  
        range.deleteContents();               
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli28.08.2011. u 22:50 - pre 154 meseci
Hm, moguce je da sam prevideo nesto, ali trebalo bi da bude veoma lako. Ispisacu osnovni kod, ti ubaci ako su potrebne neke konverzije da se prikaze znak i slicno.
Code (javascript):

if (textarea.length == 0) {
     textarea.value = znak; /*jer nema nicega, tako da moze da prepise*/
}
/*kod za vracanje fokusa na textarea*/
 

P.S.
Izvinjavam se ako ovo totalno trivijalno resenje ne radi. Trenutno ne mogu da otvorim gotovo nista jer je provajder katastrofa, a svi su navrnuli jer je nedelja uvece, i samim tim ne mogu ni da vidim gde je kod realizovan niti da isprobam bilo sta.
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 11:24 - pre 154 meseci
Na žalost, ni ovo ne deluje.
Ali, uspelo mi je nešto drugo.
Primetio sam da se znak ne instertuje, ako prethodno za njega prostor ne osvoji "spejs" sa tastature!
To se događalo i kada ima teksta u textarei, a znak je trebalo uneti kao poslednji u tekstu: u uvek je bilo neopodno prvo "spejs" pa znak!
Zato sam sa ove dve linije

Code:

        // put cursor after inserted text - 
        range.setEnd(container, pos+znak.length+1);
        range.setStart(container, pos+znak.length+1);

skinuo +1
Code:

        // put cursor after inserted text - 
        range.setEnd(container, pos+znak.length);
        range.setStart(container, pos+znak.length);

i sada sve savršeno radi kada ima bilo koji znak unet u textareu sa tastature, ali, na žalost, glavna "boljka" ostaje i dalje: unos znaka u potpuno praznu "textareu" ne radi!
Upoređujući ponašanje editora pod IE, gde je sve u redu, sa ponašanjem pod Mozillom, primetio sam da Mozilla - kad naiđe na potpuno prazno polje "textaree" - umeće <br> u njega! Kada na poziciji kursora pritisnemo "spejs" (ili unesemo bilo koji znak) imamo situaciju " "<br> posle koje se editor unormali i radi kako valja! Zanimljivo je da samo posle jednog unetog karaktera, Mozilla sklanja ovaj <br>!
Kod IE kursor i ne mora da bude u textarei, a editor radi!
Odakle li dolazi ovo <br>?!?
Ko je raspoložen, može i sam da se uveri:
http://www.paundurlic.com/vlaski.recnik/ispravke-test.php
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 11:40 - pre 154 meseci
Ok, pogledao sam konacno kod. za !IE se koristi .contentDocument, dok se za IE koristi .contentWindow
Radim u Chrome-u i tu ima jos nekih problema, uglavnom javlja gresku kod ove linije, pogledacu posle kako resiti:
Code (javascript):
        var range = sel.getRangeAt(0);
          // editor-ess.js:362Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1
 


Ubacivanje slova kada je sve prazno se moze resiti ovako:
Code (javascript):

        var temp = document.getElementById(this.wysiwyg_content).contentDocument.getElementsByTagName("body").item(0).innerHTML;
        if(temp.length == 0)
            temp = znak;
 


Edit: Javio se novi problem zato sto posle nekog vremena on ubaci unutra npr <br> tag i onda ne registruje da je prazan <body> tag. Mozda se greske javljaju kada se klikne na neko slovo, ili da nije zavrseno sve do kraja.

[Ovu poruku je menjao plague dana 29.08.2011. u 13:12 GMT+1]
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 13:06 - pre 154 meseci
Sada ne radi ovo... Prosto ne znam sta se desava.
On u DeveloperTools-u kada pratim promenljive pokazuje da je temp (<body>) dobio vrednost, ali vizuelno nista se ne desava. Takodje sta god kucao kada pregledavam HTML kod ne ispisuje se tekst u Chrome-u dok FF pokazuje neki nebulozan. Npr za iskucan tekst:
Code:
Danas je bas divan dan. Odican za ucenje javascript-a!
Koji nije iskucan iz prve nego je i brisan malo usred greski ispisuje sledece:
Code (html):
<body>
j
<br _moz_dirty="">
</body>


Ako greske nisu bile otklanjane dok se pisala skripta, moguce je da se sada kriju na svim stranama, tesko je reci sta se tacno sve desava bez da se lepo prouci od pocetka.
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 13:09 - pre 154 meseci
Izgleda da je uzrok porblema u tom tajanstvenom <br>, jer on smeta i kasnije, kada pokušamo da dodamo nov znak iza poslednjeg karaktera u textarei? I tu moramo da <br> "odmaknemo" spejsom, ili da unesemo bilo koji znak sa tastature ... Nemam ideju odakle ulece to <br>, jer kao da nema pravila, mada je pravio da uvek ima neko pravilo? :))
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 14:41 - pre 154 meseci
Ok, nadam se da sam ovaj put resio kako da se tekst doda i kada je prazno.
Ovo je pravilo problem: container.insertData(pos, znak);
Kada je pazno sve, container je tipa HTMLBodyElement koji nema metod insertData() tako da je javljao gresku. Samo [object Text] ima takvu metodu tako da se to moze resiti ovako:
Code (javascript):
        if(container != "[object Text]"){
            var textnod = textarea.createTextNode(znak);
            container.insertBefore(textnod);
        }
        else {
            container.insertData(pos, znak);
        }
 

Ovo cak resava problem ako se prvo "nalupa" enter i upise tekst, a zatim pokusa na pocetak da se ubaci slovo.

Ostaje jos samo da se rese neke stvari kao sto su random kreiranje <div> i <br> elemenata kada se pritiska enter. Jer ako se npr napravi dva reda razmaka i klikne slovo, on ce ovako ubaciti u treci red, umesto u drugi.

Ovo je sve za chrome, u FF-u ne mogu nista da pogledam jer kod kao da je obfuscate-ovan..
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 15:15 - pre 154 meseci
Evo komlpetne funkcije koja trenutno radi sve, sem umetanja znaka u praznu textareu, pa vas najlubaznije molim da mi pokazete gde da da upisem kod koji ste mi preporucili u prethodnom topiku.
I usput objasnite mi sta znaci obfuscate-ovan kod?
Code:

WYSIWYG_Editor.prototype.insertMyText = function (text, textarea) {
            
    var znak = text;   

    if (this.isMSIE())
    {
    document.getElementById(this.wysiwyg_content).contentWindow.focus();      
    var textarea=document.getElementById(this.wysiwyg_content).contentWindow.document.selection.createRange();
    textarea.pasteHTML(znak);
    document.getElementById(this.wysiwyg_content).contentWindow.focus();
    
    } else {        
        textarea=document.getElementById(this.wysiwyg_content).contentWindow;
                
        var sel = textarea.getSelection();      
        var range = sel.getRangeAt(0);          
        sel.removeAllRanges();                  
        range.deleteContents();                 
 
        var container = range.startContainer;   
        var pos = range.startOffset;    
        range=document.createRange();            
        container.insertData(pos, znak);
                         
        range.setEnd(container, pos+znak.length);
        range.setStart(container, pos+znak.length);  
        
        sel.removeAllRanges();
        sel.addRange(range);
    } 
}
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 15:58 - pre 154 meseci
Code (javascript):

container.insertData(pos, znak);
 

zamenite sa:
Code (javascript):

        if(container != "[object Text]"){
            var textnod = textarea.createTextNode(znak);
            container.insertBefore(textnod);
        }
        else {
            container.insertData(pos, znak);
        }
 


Obfuscate-ovan kod je onaj koji se ne moze citati, kriptovan. Iz nekog razloga kada pokusam da pogledam skriptu i da se igram sa njom u FireFox-u, vidim samo neke besmislene znakove tako da ne mogu nista da uradim.
_________

Edit: Zaboravio sam naglasim da se linija:
Code:

textarea=document.getElementById(this.wysiwyg_content).contentWindow;

Mora promeniti u:
Code:

textarea=document.getElementById(this.wysiwyg_content).contentDocument;



[Ovu poruku je menjao plague dana 29.08.2011. u 17:18 GMT+1]
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 16:25 - pre 154 meseci
Na žalost, ni ovo ne radi!
Isto kao i pre, a proverio sam - cita uslov
Code:

if (container != "[object Text]"){

i ulazi u taj deo funkcije, sto znaci da mu je cela fiozofija ovde negde:
Code:

          var textnod = textarea.createTextNode(znak);
          container.insertBefore(textnod);

PS. Provukao sam kod editora kroz Notepad i snimio ga u UTF-8, pa je, mislim, sada citljiv!
Mozda ce to da vam pomogne da konacno otvorimo sampanjac?
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 16:31 - pre 154 meseci
Ovu izmenu
Code:

textarea=document.getElementById(this.wysiwyg_content).contentDocument;

sam vec isprobao, posle vase prve napomene, ali ne pomaze, sta vise: editor pobrljavi i ne unosi nista!
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 16:31 - pre 154 meseci
Dodao sam Edit u proslom postu posto sam jos ranije rekao da ono treba da se menja, a niste menjali. ;]

Trenutno radim na vracanju fokusa, sto sam uspeo, ali samo na pocetak. Trudim se da ga nateram da se vrati gde je bio.

Edit: Treba da se menja samo u else gde je deo zaduzen za FF i ostale browsere, ne svuda.

Code (javascript):


   var znak = text;  
    if (this.isMSIE())
    {
    document.getElementById(this.wysiwyg_content).contentWindow.focus();      
    var textarea=document.getElementById(this.wysiwyg_content).contentWindow.document.selection.createRange();
    textarea.pasteHTML(znak);
    document.getElementById(this.wysiwyg_content).contentWindow.focus();
   
    } else {        
        textarea=document.getElementById(this.wysiwyg_content).contentDocument;
        //        
        sel = textarea.getSelection();      // get current selection
        range = sel.getRangeAt(0);          //
        sel.removeAllRanges();                  // deselect everything //poništite sve
        range.deleteContents();                 // remove content of current selection from document                                                                                      
 
        var container = range.startContainer;   // get location of current selection -    
        var pos = range.startOffset;    
        range=document.createRange();           // make a new range for the new selection
        //container.insertData(pos, text);

        if (container != "[object Text]"){
           
            var textnod = textarea.createTextNode(znak);
            container.insertBefore(textnod);
        }
        else {
            container.insertData(pos, znak);
        }                        
        textarea.getElementsByTagName("body").item(0).focus();
    }
}
 


Edit 2:
Isprobao sam u FF i stvarno ne radi, dok u Chromu nece da radi ako se ovako ne stavi. Svaki browser prica za sebe izgleda..

[Ovu poruku je menjao plague dana 29.08.2011. u 18:07 GMT+1]
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 18:45 - pre 154 meseci
To je to, probajte jos ovo za FF, ako valja da znam da pogledam jos malo, a ako ne da odustajem.

Posle dosta vremena, verujem da je za FF sve reseno sem vracanja fokusa. Medjutim ovako za Chrome vise ne radi uzastopno dodavanje bez vracanja fokusa prvo.

Code (javascript):

    } else {        
     textarea=document.getElementById(this.wysiwyg_content).contentWindow;
     var sel = textarea.getSelection();      // get current selection
     var range = sel.getRangeAt(0);
     sel.removeAllRanges();                  // deselect everything //poništite sve
     range.deleteContents();                 // remove content of current selection from document                                                                                      
     var container = range.startContainer;   // get location of current selection -    
     var pos = range.startOffset;    

     if (container == "[object Text]"){
          container.insertData(pos, znak);
        }
        else {
          var textnod = document.createTextNode(znak);
          range.insertNode(textnod);
        }
         
         
     range=document.createRange();
     range.setEnd(container, pos+znak.length);
     range.setStart(container, pos+znak.length);
     sel.removeAllRanges();
     sel.addRange(range);

     document.getElementById(this.wysiwyg_content).contentWindow.focus();
    }
 


Edit: Fokus resen i radi super. :]
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli29.08.2011. u 19:40 - pre 154 meseci
Da! Svaka čast, majstore!
Radi besprekorno!
Zaista ste mi puno pomogli, hvala vam!

Pozdrav, do sledećeg problema! :)
Paun
 
Odgovor na temu

[es] :: Javascript i AJAX :: Unos elementa na poziciji kursora u textareu: radi u IE, ali ne i Mozilli

[ Pregleda: 2145 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.