OSDN Git Service

文字列を選択した状態で装飾した場合、前後にBBCODEを挿入するようにした
authorkonekoneko <jbh03215@hotmail.co.jp>
Tue, 2 Apr 2013 06:50:26 +0000 (15:50 +0900)
committerkonekoneko <jbh03215@hotmail.co.jp>
Tue, 2 Apr 2013 06:50:26 +0000 (15:50 +0900)
public/scripts/chatclient.js

index 100456c..ca5babf 100644 (file)
@@ -257,42 +257,56 @@ function clickNameEventListener(e)
 \r
 function AddBold()\r
 {\r
-       InsertAtCaret(document.chat_form.message,"[b][/b]");\r
+       var text = GetSelection(document.chat_form.message);\r
+       ReplaceSelection(document.chat_form.message,sprintf("[b]%s[/b]",text));\r
 }\r
 \r
 function AddItalic()\r
 {\r
-       InsertAtCaret(document.chat_form.message,"[i][/i]");\r
+       var text = GetSelection(document.chat_form.message);\r
+       ReplaceSelection(document.chat_form.message,sprintf("[i]%s[/i]",text));\r
 }\r
 \r
 function AddStrike()\r
 {\r
-       InsertAtCaret(document.chat_form.message,"[s][/s]");\r
+       var text = GetSelection(document.chat_form.message);\r
+       ReplaceSelection(document.chat_form.message,sprintf("[s]%s[/s]",text));\r
 }\r
 \r
 function AddFontSize(size)\r
 {\r
-       InsertAtCaret(document.chat_form.message,sprintf("[size=%f][/size]",size));\r
+       var text = GetSelection(document.chat_form.message);\r
+       ReplaceSelection(document.chat_form.message,sprintf("[size=%f]%s[/size]",size,text));\r
 }\r
 \r
-function InsertAtCaret(element, text) {\r
+function GetSelection(element)\r
+{\r
     if (document.selection) {\r
         element.focus();\r
         var sel = document.selection.createRange();\r
-        sel.text = text;\r
-        element.focus();\r
+        return sel.text;\r
     } else if (element.selectionStart || element.selectionStart === 0) {\r
         var startPos = element.selectionStart;\r
         var endPos = element.selectionEnd;\r
         var scrollTop = element.scrollTop;\r
-        element.value = element.value.substring(0, startPos) + text + element.value.substring(endPos, element.value.length);\r
-        element.focus();\r
-        element.selectionStart = startPos + text.length;\r
-        element.selectionEnd = startPos + text.length;\r
-        element.scrollTop = scrollTop;\r
-    } else {\r
-        element.value += text;\r
+        return element.value.substring(startPos,endPos);\r
+    }else{\r
+        return "";\r
+    }\r
+}\r
+\r
+function ReplaceSelection(element,text)\r
+{\r
+    if (document.selection) {\r
         element.focus();\r
+        var sel = document.selection.createRange();\r
+        sel.text = text;\r
+    } else if (element.selectionStart || element.selectionStart === 0) {\r
+        var startPos = element.selectionStart;\r
+        var endPos = element.selectionEnd;\r
+        element.value = element.value.substring(0, startPos) + text + element.value.substring(endPos, element.value.length);\r
+    } else{\r
+       element.value = text;\r
     }\r
 }\r
 \r