Cursor/Textarea Bugfix im Firefox Browser + WCMS PHPKIT
Dokumentation: Behebt den nervigen Cursor/Textarea Bug, der in Verbindung mit dem Firefox Browser und dem WCMS PHPKIT auftritt.
Viele kennen das Problem, das man mit dem Firefox Browser beim schreiben eines langen Textes, der über die grenzen der Textarea hinausgeht(Scrollbalken erscheinen), beim formatieren des Textes mit BB-Code der Cursor zwar an der Richtigen Position steht, aber das Sichtfeld nach oben gesprungen ist. Das ist besonders nervig, wenn man im nachhinein den ganzen Text formatieren möchte, denn ich schreibe immer erst den Text unformatiert, bevor ich den verfeiner. Da das im PHPKIT leider ein Bug ist, der noch nicht behoben wurde hier mal schnell der Bugfix dafür.
Die Editierungen sind in den folgenden Dateien vorzunehmen:
fx/main.js
pk/fx/main.js
Die Anleitung passt auf beide Dateien!
Suche:
Füge darunter ein:
Suche weiter:
Füge darunter ein:
Viele kennen das Problem, das man mit dem Firefox Browser beim schreiben eines langen Textes, der über die grenzen der Textarea hinausgeht(Scrollbalken erscheinen), beim formatieren des Textes mit BB-Code der Cursor zwar an der Richtigen Position steht, aber das Sichtfeld nach oben gesprungen ist. Das ist besonders nervig, wenn man im nachhinein den ganzen Text formatieren möchte, denn ich schreibe immer erst den Text unformatiert, bevor ich den verfeiner. Da das im PHPKIT leider ein Bug ist, der noch nicht behoben wurde hier mal schnell der Bugfix dafür.
Die Editierungen sind in den folgenden Dateien vorzunehmen:
fx/main.js
pk/fx/main.js
Die Anleitung passt auf beide Dateien!
Suche:
|
|
PHP-Quelltext |
1 |
pos=pkBBArea.selectionStart + text.length;
|
Füge darunter ein:
|
|
PHP-Quelltext |
1 |
scrollPos = pkBBArea.scrollTop;
|
Suche weiter:
|
|
PHP-Quelltext |
1 2 3 4 |
else
pkBBArea.value+=text
pkBBFocus();
|
Füge darunter ein:
|
|
PHP-Quelltext |
1 |
pkBBArea.scrollTop = scrollPos;
|
Coole Sache.
Es geht nicht darum zu haben was man will, sondern zu schätzen was man hat!
Blutrausch HP
Mauern sind auch nur Steine & Wassertropen können auch mal Wassermengen werden!
Blutrausch HP
Mauern sind auch nur Steine & Wassertropen können auch mal Wassermengen werden!
Danke
Seit 02.07.2010 Papa einer süssen Tocher !!!!
http://www.burnerfm.de
Mit den besten Hits der 80´s, 90´s und von heute. Plus einigen PHPKit Addons... uvm.
Mit den besten Hits der 80´s, 90´s und von heute. Plus einigen PHPKit Addons... uvm.
Bei Firefox kann es dauern bis das JS neu eingelesen wird.
Es geht nicht darum zu haben was man will, sondern zu schätzen was man hat!
Blutrausch HP
Mauern sind auch nur Steine & Wassertropen können auch mal Wassermengen werden!
Blutrausch HP
Mauern sind auch nur Steine & Wassertropen können auch mal Wassermengen werden!
Hmm.
Ne funzt leider nicht. Habe nun mal den Cache von Firefox leeren lassen aber dennoch springt das Feld an den Anfang sobald ich was per BBCode eingefügt habe.
Hier meine Dateien
fx/main.js
Hier klicken für weitere Informationen
pk/fx/main.js
Hier klicken für weitere Informationen
idee?
Gruß,
mario
Ne funzt leider nicht. Habe nun mal den Cache von Firefox leeren lassen aber dennoch springt das Feld an den Anfang sobald ich was per BBCode eingefügt habe.
Hier meine Dateien
fx/main.js
|
|
Javascript-Quelltext |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
// Start - BB-Codes in das Textfeld schreiben by www.kit-extreme.de und www.kit-spiele.de function insertBBCode(aTag, eTag) { var input = document.myform.content; input.focus(); /* für Internet Explorer */ if(typeof document.selection != 'undefined') { /* Einfügen des Formatierungscodes */ var range = document.selection.createRange(); var insText = range.text; range.text = aTag + insText + eTag; /* Anpassen der Cursorposition */ range = document.selection.createRange(); if (insText.length == 0) { range.move('character', -eTag.length); } else { range.moveStart('character', aTag.length + insText.length + eTag.length); } range.select(); } /* für neuere auf Gecko basierende Browser */ else if(typeof input.selectionStart != 'undefined') { /* Einfügen des Formatierungscodes */ var start = input.selectionStart; var end = input.selectionEnd; var insText = input.value.substring(start, end); input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end); /* Anpassen der Cursorposition */ var pos; if (insText.length == 0) { pos = start + aTag.length; } else { pos = start + aTag.length + insText.length + eTag.length; } input.selectionStart = pos; input.selectionEnd = pos; } /* für die übrigen Browser */ else { /* Abfrage der Einfügeposition */ var pos; var re = new RegExp('^[0-9]{0,3}$'); while(!re.test(pos)) { pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0"); } if(pos > input.value.length) { pos = input.value.length; } /* Einfügen des Formatierungscodes */ var insText = prompt("Bitte gib den zu formatierenden Text ein:"); input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos); } } // Ende - BB-Codes in das Textfeld schreiben by www.kit-extreme.de und www.kit-spiele.de // *** Text bei der Eingabeaufforderung *********** linkname = "Geben Sie bitte den Linknamen an (optional)."; linkadresse = "Geben Sie bitte die vollst\u00E4ndige Adresse des Links an."; /*Lightbox ANFANG*/ lightbox = "Geben Sie hier den Bildlink an.\nSie k\u00F6nnen auch mehrere Angeben! Wenn sie das Feld leerlassen wird die Abfrage beendet.\nAlternativ k\u00F6nnen Sie 'Abbrechen' w\u00E4hlen, um den Modus direkt zuverlassen."; /*Lightbox ENDE*/ emailname = "Geben Sie bitte die E-Mail-Adresse ein."; listentyp = "F\u00FCr eine numerierte Liste geben Sie eine '1' an.\r\nF\u00FCr eine alphabetische ein 'a'.\r\nF\u00FCr eine einfache Punktliste dr\u00FCcken Sie OK."; listenwerte = "Geben Sie bitte die Listenpunkte ein und dr\u00FCcken Sie anschliessend OK.\r\nAlternativ k\u00F6nnen Sie 'Abbrechen' w\u00E4hlen, um die Liste direkt fertigzustellen."; //**** Pop-Fenster ********** function helpwindow(w,h,e) { window.open("include.php?path=popup&mode=help&explain="+e,"helpwindow","toolbar=no,scrollbars=yes,resizable=yes,status=no,width="+w+",height="+h); } function smiliewindow(w,h) { window.open("include.php?path=popup&mode=smilies&window_w_size="+w+"&window_h_size="+h,"smilies","toolbar=no,scrollbars=yes,resizable=yes,status=no,width="+w+",height="+h); } function finduserID(w,h) { window.open("include.php?path=popup&mode=finduser&window_w_size="+w+"&window_h_size="+h,"finduser","toolbar=no,scrollbars=yes,resizable=yes,status=no,width="+w+",height="+h); } function checkall(status,theelement) { for (i=0;i<document.myform.length;i++) {if(document.myform.elements[i].name=="" + theelement + "[]") document.myform.elements[i].checked=status;} } /*bbcode*/ var pkBBArea=null; var pkBBSelected=''; function pkBBFocus() { pkBBArea.focus(); } /*textselection*/ function pkBBSelection(obj) { pkBBArea=obj; if(window.getSelection) pkBBSelected=pkBBArea.value.substring(pkBBArea.selectionStart,pkBBArea.selectionEnd); else if(document.getSelection) pkBBSelected=pkBBArea.value.substring(pkBBArea.selectionStart,pkBBArea.selectionEnd); else if(document.selection) pkBBSelected=document.selection.createRange().text; if(pkBBArea.createTextRange) pkBBArea.caretPos=document.selection.createRange().duplicate(); return true; } function pkBBSingle(text) { text=' '+text+' '; pkBBCodeAdd(text); } function pkBBCodeAdd(text) { if(pkBBArea==null) { pkBBArea=document.getElementById('pkBBArea'); pkBBFocus(); pkBBSelection(pkBBArea); } if(window.getSelection) { pos=pkBBArea.selectionStart + text.length; scrollPos = pkBBArea.scrollTop; pkBBArea.value=pkBBArea.value.substr(0,pkBBArea.selectionStart) + text + pkBBArea.value.substr(pkBBArea.selectionEnd); pkBBArea.selectionStart=pos; pkBBArea.selectionEnd=pos; } else if(pkBBArea.createTextRange && pkBBArea.caretPos) { var caretPos = pkBBArea.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1)==' ' ? text + ' ' : text; } else pkBBArea.value+=text pkBBFocus(); } pkBBArea.scrollTop = scrollPos; function pkBBCode(bbcode) { text=(pkBBSelected) ? pkBBSelected : ''; text="["+bbcode+"]"+text+"[/"+bbcode+"]"; pkBBCodeAdd(text); pkBBFocus(); } /*Lightbox ANFANG*/ function pkBBLight(bbcode){ text=(pkBBSelected) ? pkBBSelected : ''; LBPath="initial"; while((LBPath!="") && (LBPath != null)) { LBPath=prompt(lightbox,text); if((LBPath!='') && (LBPath != null)){ showlist = "["+bbcode+"]"+LBPath+"[/"+bbcode+"]"; pkBBCodeAdd(showlist); } showlist =""; text=""; } } /*Lightbox ENDE*/ /*link and email*/ function pkBBLink(bbcode) { text=(pkBBSelected) ? pkBBSelected : ''; linktext = prompt(linkname,text); var fensterausgabe; if (bbcode == "URL") { ausgabe = linkadresse; ausgabeinhalt = "http://"; } else if (bbcode == "IURL") { ausgabe = linkadresse; ausgabeinhalt = "?path="; } else { ausgabe = emailname; ausgabeinhalt = ""; } linkurl = prompt(ausgabe,ausgabeinhalt); if ((linkurl != null) && (linkurl != "")) { if ((linktext != null) && (linktext != "")) { auswahltext = "["+bbcode+"="+linkurl+"]"+linktext+"[/"+bbcode+"] "; pkBBCodeAdd(auswahltext); } else{ auswahltext = "["+bbcode+"]"+linkurl+"[/"+bbcode+"] "; pkBBCodeAdd(auswahltext); } } } /* list */ function pkBBList() { listtype=prompt(listentyp,''); if((listtype == "a") || (listtype == "1")) { mylist = "[list="+listtype+"]\n"; listend = "[/list="+listtype+"] "; } else { mylist = "[list]\n"; listend = "[/list] "; } listentry="initial"; while((listentry!="") && (listentry != null)) { listentry=prompt(listenwerte,''); if((listentry!='') && (listentry != null)) mylist = mylist+"[*]"+listentry+"\n"; } pkBBCodeAdd(mylist+listend); } |
pk/fx/main.js
|
|
Javascript-Quelltext |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
// *** Text bei der Eingabeaufforderung *********** standard = "Geben Sie bitte den gew\u00FCnschten Text ein:"; texteingabe = "Geben Sie bitte Ihren Text ein - "; linkname = "Geben Sie bitte den Linknamen an (optional)."; linkadresse = "Geben Sie bitte die vollst\u00E4ndige Adresse des Links an."; /*Lightbox ANFANG*/ lightbox = "Geben Sie hier den Bildlink an.\nSie k\u00F6nnen auch mehrere Angeben! Wenn sie das Feld leerlassen wird die Abfrage beendet.\nAlternativ k\u00F6nnen Sie 'Abbrechen' w\u00E4hlen, um den Modus direkt zuverlassen."; /*Lightbox ENDE*/ emailname = "Geben Sie bitte die E-Mail-Adresse ein."; listentyp = "F\u00FCr eine numerierte Liste geben Sie eine '1' an.\r\nF\u00FCr eine alphabetische ein 'a'.\r\nF\u00FCr eine einfache Punktliste dr\u00FCcken Sie OK."; listenwerte = "Geben Sie bitte die Listenpunkte ein und dr\u00FCcken Sie anschliessend OK.\r\nAlternativ k\u00F6nnen Sie 'Abbrechen' w\u00E4hlen, um die Liste direkt fertigzustellen."; highlightmsg = "Alles markiert und in die Zwischenablage kopiert."; searchfailed = "Die Suche lieferte kein Ergebnis."; admincss = "<link rel='stylesheet' href='fx/default/css/main.css' type='text/css'>"; //**** Pop-Fenster ********** function helpwindow(w,h,e) { window.open("include.php?path=help&explain="+e,"helpwindow","toolbar=yes,scrollbars=yes,resizable=yes,location=yes,directories=yes,status=yes,menubar=yes,width="+w+",height="+h); } function smiliewindow(w,h) { window.open("include.php?path=popup&mode=smilies&window_w_size="+w+"&window_h_size="+h,"smilies","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function morelinkswindow(w,h,opt) { window.open("include.php?path=popup&mode=morelinks&window_w_size="+w+"&window_h_size="+h+"&option="+opt,"morelinks","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function readfilewindow(w,h,opt) { window.open("include.php?path=popup&mode=readfile&window_w_size="+w+"&window_h_size="+h+"&option="+opt,"readfile","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function finduserID(w,h,opt) { window.open("include.php?path=popup&mode=finduser&window_w_size="+w+"&window_h_size="+h+"&option="+opt,"finduser","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function downloadwindow(w,h,opt) { window.open("include.php?path=popup&mode=download&window_w_size="+w+"&window_h_size="+h+"&option="+opt,"download","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function previewWindow(w,h) { window.open("include.php?path=popup&mode=preview&window_w_size="+w+"&window_h_size="+h,"preview","toolbar=no,scrollbars=yes,resizable=yes,width="+w+",height="+h); } function previewTemplate() { var inf=document.edittemplate.template_value.value + admincss; popupwindow=window.open(", ","popup","toolbar=no,status=no,scrollbars=yes,resizable=yes"); popupwindow.document.write("" + inf + ""); } var NS4=(document.layers); var IE4=(document.all); var win=window; var n=0; function highlightSearch(str) { var txt, i, found; if (str == '') return false; if (NS4) { if (!win.find(str)) while(win.find(str, false, true)) n++; else n++; if (n == 0) alert(searchfailed); } if (IE4) { txt = win.document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) { txt.moveStart('character', 1); txt.moveEnd('textedit'); } if (found) { txt.moveStart('character', -1); txt.findText(str); txt.select(); txt.scrollIntoView(); n++; } else { if (n > 0) {n = 0; findit(str);} else alert(searchfailed); } } return false; } function HighlightAndCopy() { var tempval=eval("document.edittemplate.template_value") tempval.focus() tempval.select() if (document.all){ therange=tempval.createTextRange() therange.execCommand("Copy") window.status=highlightmsg setTimeout("window.status=''",1800) } } function checkall(status,theelement) { for (i=0;i<document.myform.length;i++) {if(document.myform.elements[i].name=="" + theelement + "[]") document.myform.elements[i].checked=status;} } /*bbocde*/ var pkBBArea=null; var pkBBSelected=''; function pkBBFocus() { pkBBArea.focus(); } /*textselection*/ function pkBBSelection(obj) { pkBBArea=obj; if(window.getSelection) pkBBSelected=pkBBArea.value.substring(pkBBArea.selectionStart,pkBBArea.selectionEnd); else if(document.getSelection) pkBBSelected=pkBBArea.value.substring(pkBBArea.selectionStart,pkBBArea.selectionEnd); else if(document.selection) pkBBSelected=document.selection.createRange().text; if(pkBBArea.createTextRange) pkBBArea.caretPos=document.selection.createRange().duplicate(); return true; } function pkBBSingle(text) { text=' '+text+' '; pkBBCodeAdd(text); } function pkBBCodeAdd(text) { if(pkBBArea==null) { pkBBArea=document.getElementById('pkBBArea'); pkBBFocus(); pkBBSelection(pkBBArea); } if(window.getSelection) { pos=pkBBArea.selectionStart + text.length; scrollPos = pkBBArea.scrollTop; pkBBArea.value=pkBBArea.value.substr(0,pkBBArea.selectionStart) + text + pkBBArea.value.substr(pkBBArea.selectionEnd); pkBBArea.selectionStart=pos; pkBBArea.selectionEnd=pos; } else if(pkBBArea.createTextRange && pkBBArea.caretPos) { var caretPos = pkBBArea.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1)==' ' ? text + ' ' : text; } else pkBBArea.value+=text pkBBFocus(); } pkBBArea.scrollTop = scrollPos; function pkBBCode(bbcode) { text=(pkBBSelected) ? pkBBSelected : ''; text="["+bbcode+"]"+text+"[/"+bbcode+"]"; pkBBCodeAdd(text); pkBBFocus(); } /*Lightbox ANFANG*/ function pkBBLight(bbcode){ text=(pkBBSelected) ? pkBBSelected : ''; LBPath="initial"; while((LBPath!="") && (LBPath != null)) { LBPath=prompt(lightbox,text); if((LBPath!='') && (LBPath != null)){ showlist = "["+bbcode+"]"+LBPath+"[/"+bbcode+"]"; pkBBCodeAdd(showlist); } showlist =""; text=""; } } /*Lightbox ENDE*/ /*link and email*/ function pkBBLink(bbcode) { text=(pkBBSelected) ? pkBBSelected : ''; linktext = prompt(linkname,text); var fensterausgabe; if (bbcode == "URL") { ausgabe = linkadresse; ausgabeinhalt = "http://"; } else if (bbcode == "IURL") { ausgabe = linkadresse; ausgabeinhalt = "?path="; } else { ausgabe = emailname; ausgabeinhalt = ""; } linkurl = prompt(ausgabe,ausgabeinhalt); if ((linkurl != null) && (linkurl != "")) { if ((linktext != null) && (linktext != "")) { auswahltext = "["+bbcode+"="+linkurl+"]"+linktext+"[/"+bbcode+"] "; pkBBCodeAdd(auswahltext); } else{ auswahltext = "["+bbcode+"]"+linkurl+"[/"+bbcode+"] "; pkBBCodeAdd(auswahltext); } } } /* list */ function pkBBList() { listtype=prompt(listentyp,''); if((listtype == "a") || (listtype == "1")) { mylist = "[list="+listtype+"]\n"; listend = "[/list="+listtype+"] "; } else { mylist = "[list]\n"; listend = "[/list] "; } listentry="initial"; while((listentry!="") && (listentry != null)) { listentry=prompt(listenwerte,''); if((listentry!='') && (listentry != null)) mylist = mylist+"[*]"+listentry+"\n"; } pkBBCodeAdd(mylist+listend); } |
idee?
Gruß,
mario
Ähnliche Themen
-
News & Ankuendigungen »-
PHPKIT 1.6.5 veröffentlicht
(28. Juli 2009, 15:25)
-
alte Versionen [1.6.03|1.6.1|1.6.4] »-
Deadline Timer
(13. April 2008, 14:04)
-
Web | Programmierung »-
Hintergrundgrafik ins Textfeld
(23. März 2008, 02:28)
-
alte Versionen [1.6.03|1.6.1|1.6.4] »-
Design wird nur in Firefox 3 richtig angezeigt!
(20. September 2008, 12:24)



Guck nochmal nach