![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
czesc, mam nastepujacy problem:
selection to zaznaczony tekst w polu pewnym jak dam alert(selection); to zwraca mi część ciągu która jest zaznaczona jak mam zrobic zeby tą część pogrubiło i zapisalo do zmiennej pogrubione ? próbuje: oRTE.document.selection=('<b>' + selection + '</b>'); ale cos nie robi (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie chcesz wyświetlić w alercie pogrubinego tekstu ? Z tego co wiem nie da się.
Jeśli chodzi o pogrubiebnie tekstu. To robisz tak: Kod var mess=document.selection.bold();
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
nie o to chodzilo, troche namieszałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
kawalek kodu ponizej coby sie zorientowac co do struktury. rte to ramka iframe w ktorej jest wyswietlany html a selection to zaznaczony w tej ramce kawalek tekstu. chodzi o to zeby zmienic jakos ten zaznaczony kawałek (pogrubic, dodac znaki na poczatku i koncu, zmienic kolor, cokolwiek, nie tylko wbudowane metody) i zapisac spowrotem na miejsce. oRTE = frames[rte]; var selection = oRTE.document.selection; var html=oRTE.document.body.innerHTML; |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o manipulację własciwościami tekstu, to wbudowanymi metodami możesz zmienić wszystko co chcesz.
np. Kod //rozmiar: selection.fontsize("20"); //pogrubienie selection.bold(); //color selection.fontcolor("red"); Zobacz też link: http://www.w3schools.com/js/js_obj_string.asp Próbujesz zrobic jakiś edytor ? Bo jeśli tak trzeba się zabrać do tego inaczej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
no nie zupelnie zrobic, potrzebuje do edytora tego, dorobic opcje wyboru stylu, tzn zaznaczasz fragment i zostaje on opleciony <div style=" ..."> tekst zazanczony </div> do calosci tekstu w ramce wiem jak zrobic, ale do selecta nie. jeszcze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
jak daje Kod oRTE.document.selection.fontsize("20"); to wyskakuje w IE: object error w Mozilla Firefox: TypeError: oRTE.document.selction has no properities Kod var selection = oRTE.document.selection; alert(selection); daje mi prawidlowo czyli zaznaczony fragment tekstu. a mi go pasuje obrobic i wpisac zpowrotem. Ten post edytował a79rtur 23.10.2004, 11:09:07 |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Zmień:
Kod oRTE.document.selection.fontsize("20"); na Kod oRTE.document.selection.createRange().text.fontsize("20");
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
to samo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
A w kiedy masz ten błąd ? Pokaż na przykładzie kodu, chodzi o to gdzie i jak robisz tą zamianę. To co napisałem napewno działa bo są to standardowe operacje na stringach.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
ok. cala funkcja
Kod //Function to format text in the text box
function FormatText(rte, command, option) { var oRTE; if (document.all) { oRTE = frames[rte]; //get current selected range var selection = oRTE.document.selection; if (selection != null) { rng = selection.createRange(); } } else { oRTE = document.getElementById(rte).contentWindow; //get currently selected range var selection = oRTE.getSelection(); rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); } try { if ((command == "forecolor") || (command == "hilitecolor")) { //save current values parent.command = command; currentRTE = rte; //position and show color palette buttonElement = document.getElementById(command + '_' + rte); // Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div. document.getElementById('cp' + rte).style.left = getOffsetLeft(buttonElement, 4) + "px"; document.getElementById('cp' + rte).style.top = (getOffsetTop(buttonElement, 4) + buttonElement.offsetHeight + 4) + "px"; if (document.getElementById('cp' + rte).style.visibility == "hidden") { document.getElementById('cp' + rte).style.visibility = "visible"; document.getElementById('cp' + rte).style.display = "inline"; } else { document.getElementById('cp' + rte).style.visibility = "hidden"; document.getElementById('cp' + rte).style.display = "none"; } } else if (command == "createlink") { var szURL = prompt("Wpisz adres strony:", "http://"); try { //ignore error for blank urls oRTE.document.execCommand("Unlink", false, null); oRTE.document.execCommand("CreateLink", false, szURL); } catch (e) { //do nothing } } else if (command == "createemail") { var szEMAIL = prompt("Wpisz adres email:", "mailto:"); try { //ignore error for blank urls oRTE.document.execCommand("Unlink", false, null); oRTE.document.execCommand("CreateLink", false, szEMAIL); } catch (e) { //do nothing } } else if (command == "uzyjstylu") { ////////////////////////////////////////////////////////////////////////////////////////// oRTE.document.selection.createRange().text.fontsize("20"); ///////////////////////////////////////////////////////////////////////////////////////// } else if (command == "usunstyl") { oRTE.focus(); //oRTE.document.getSelection().style.visibility = "hidden"; var html=oRTE.document.body.innerHTML; var html_male=html.toLowerCase(); start_div_open = html_male.indexOf( "\<div style" ); //zwraca poczatek otwarcia div'a //alert(start_div_open); end_div_open = html_male.indexOf( "\"\>", start_div_open); end_div_open += 2; start_div_close = html_male.lastIndexOf("</div>"); //alert(start_div_close); if (start_div_open!=-1 && start_div_close!=-1) { html=html.substring(end_div_open, start_div_close); oRTE.document.body.innerHTML=html; } oRTE.focus(); } else { oRTE.focus(); oRTE.document.execCommand(command, false, option); oRTE.focus(); } } catch (e) { alert(e); } } |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Tak chyba nie można tego użyć, trzeba to zapisać do zmiennej i tą zmienną się posłużyć. Poza tym na stronie, którą podałeś takie coś jest zrobione więc nie wiem w czym problem ?
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
to moze by zrobic tak ze mam miejsce w ciagu html gdzie sie zaczyna i konczy selekcja i podmienie w nim na inny ciag? jak znalezc ten poczatek i koniec ? selekcji a nie stringu który jest w selecji to umiem, ale przeciez moze byc kilka stringow takich samych a selekcja jest jedna.
w tym edytorze to jest zrobione ale na znacznikach (no, zalezy jeszcze od przegladarki jakiej uzywasz, w firefoxie jest na stylach). i tam sa uzywane wbudowane metody np. dla pogrubienia: Kod ...
.. onClick="FormatText(\'' + rte + '\', \'bold\', \'\')"></td>') ... (wywołanie) ... ... function FormatText(rte, command, option) { ... oRTE.document.execCommand(command, false, option); ... } |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:25 |