From 49a9a90a3ae107a7e70514707e3d473f8df590aa Mon Sep 17 00:00:00 2001 From: Erik Moeller Date: Sun, 18 Jan 2004 06:37:31 +0000 Subject: [PATCH] insert tags at cursor position in MOZ and IE, simplify code --- stylesheets/wikibits.js | 59 +++++++++++++---------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/stylesheets/wikibits.js b/stylesheets/wikibits.js index 21c679ab10..e9c438a675 100644 --- a/stylesheets/wikibits.js +++ b/stylesheets/wikibits.js @@ -90,49 +90,28 @@ function toggleToc() { function insertTags(tagOpen, tagClose, sampleText) { var txtarea = document.editform.wpTextbox1; - if ((clientVer >= 4) && is_ie && is_win) { + // IE + if(document.selection) { theSelection = document.selection.createRange().text; - if (!theSelection) { - txtarea.value += tagOpen + sampleText + tagClose; - txtarea.focus(); - return; - } + if(!theSelection) { theSelection=sampleText;} + txtarea.focus(); document.selection.createRange().text = tagOpen + theSelection + tagClose; + // Mozilla + } else if(txtarea.selectionStart || txtarea.selectionStart == '0') { + startPos = txtarea.selectionStart; + endPos = txtarea.selectionEnd; + myText = (txtarea.value).substring(startPos, endPos); + if(!myText) { myText=sampleText;} + txtarea.value = txtarea.value.substring(0, startPos) + tagOpen + myText + tagClose + txtarea.value.substring(endPos, txtarea.value.length); txtarea.focus(); - return; - } - else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) - { - mozWrap(txtarea, tagOpen, tagClose, sampleText); - return; - } - else - { + cPos=startPos+(tagOpen.length+myText.length+tagClose.length); + txtarea.selectionStart=cPos; + txtarea.selectionEnd=cPos; + // All others + } else { txtarea.value += tagOpen + sampleText + tagClose; txtarea.focus(); } - storeCaret(txtarea); -} - -// From http://www.massless.org/mozedit/ -function mozWrap(txtarea, open, close) -{ - var txtarea = document.editform.wpTextbox1; - var selLength = txtarea.textLength; - var selStart = txtarea.selectionStart; - var selEnd = txtarea.selectionEnd; - if (selEnd == 1 || selEnd == 2) - selEnd = selLength; - - var s1 = (txtarea.value).substring(0,selStart); - var s2 = (txtarea.value).substring(selStart, selEnd) - var s3 = (txtarea.value).substring(selEnd, selLength); - txtarea.value = s1 + open + s2 + close + s3; - return; -} - -// Insert at Claret position. Code from -// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130 -function storeCaret(textEl) { - if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate(); -} + // reposition cursor if possible + if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate(); +} \ No newline at end of file -- 2.20.1