Fixed initial caret position on iOS
authorAlexander Ebert <ebert@woltlab.com>
Thu, 23 Feb 2017 11:52:07 +0000 (12:52 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Thu, 23 Feb 2017 11:52:13 +0000 (12:52 +0100)
wcfsetup/install/files/js/3rdParty/redactor2/plugins/WoltLabCaret.js

index 01d2411bd78c0a1e12ef85f40086297d1f6df07a..42db675fca95aeaaa2d496e8893d303d05e26484 100644 (file)
@@ -14,11 +14,27 @@ $.Redactor.prototype.WoltLabCaret = function() {
                                mpAfter.call(this, node);
                        }).bind(this);
                        
+                       var iOS = false;
+                       require(['Environment'], function (Environment) {
+                               iOS = (Environment.platform() === 'ios');
+                       });
+                       
                        var mpEnd = this.caret.end;
                        this.caret.end = (function (node) {
                                node = this.caret.prepare(node);
                                
+                               var useCustomRange = false;
                                if (node.nodeType === Node.ELEMENT_NODE && node.lastChild && node.lastChild.nodeName === 'P') {
+                                       useCustomRange = true;
+                               }
+                               else if (iOS) {
+                                       var editor = this.core.editor()[0];
+                                       if (node.parentNode === editor && editor.innerHTML === '<p><br></p>') {
+                                               useCustomRange = true;
+                                       }
+                               }
+                               
+                               if (useCustomRange) {
                                        var selection = window.getSelection();
                                        var range = document.createRange();
                                        range.selectNodeContents(node.lastChild);