diff --git a/main.js b/main.js index 477c90db..ce640390 100644 --- a/main.js +++ b/main.js @@ -53,7 +53,22 @@ function dopost(form) { return form.body.value != "" || (typeof form.thread != "undefined" && form.file.value != ""); } function citeReply(id) { - document.getElementById('body').value += '>>' + id + '\n'; + body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + start = body.selectionStart; + end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } } var selectedstyle = 'Yotsuba B'; diff --git a/templates/main.js b/templates/main.js index 577e6f66..89f98ccd 100644 --- a/templates/main.js +++ b/templates/main.js @@ -53,7 +53,22 @@ function dopost(form) { return form.body.value != "" || (typeof form.thread != "undefined" && form.file.value != ""); } function citeReply(id) { - document.getElementById('body').value += '>>' + id + '\n'; + body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + start = body.selectionStart; + end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } } var selectedstyle = '{config[default_stylesheet][0]}';