From 01eb45946cdb7faf5f4d4fdbb212392edc3c725e Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sun, 1 May 2016 18:17:28 +0100 Subject: [PATCH] Fix problem with IE11 It turns out that IE11 has a horrible bug whereby setting the placeholder attribute before setting the text will trigger an input event: https://social.msdn.microsoft.com/Forums/ie/en-US/ae4832b0-8eee-4729-b93 3-a9977ea1b583/internet-explorer-input-event-get-fired-when-settingunset ting-the-placeholder?forum=iewebdevelopment --- core/modules/editor/engines/framed.js | 13 +++++++------ core/modules/editor/engines/simple.js | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/core/modules/editor/engines/framed.js b/core/modules/editor/engines/framed.js index 3d7a90b6d..f46c86302 100644 --- a/core/modules/editor/engines/framed.js +++ b/core/modules/editor/engines/framed.js @@ -51,6 +51,13 @@ function FramedEngine(options) { tag = "input"; } this.domNode = this.iframeDoc.createElement(tag); + // Set the text + if(this.widget.editTag === "textarea") { + this.domNode.appendChild(this.iframeDoc.createTextNode(this.value)); + } else { + this.domNode.value = this.value; + } + // Set the attributes if(this.widget.editType) { this.domNode.setAttribute("type",this.widget.editType); } @@ -65,12 +72,6 @@ function FramedEngine(options) { } // Copy the styles from the dummy textarea this.copyStyles(); - // Set the text - if(this.widget.editTag === "textarea") { - this.domNode.appendChild(this.iframeDoc.createTextNode(this.value)); - } else { - this.domNode.value = this.value; - } // Add event listeners $tw.utils.addEventListeners(this.domNode,[ {name: "input",handlerObject: this,handlerMethod: "handleInputEvent"}, diff --git a/core/modules/editor/engines/simple.js b/core/modules/editor/engines/simple.js index 0b5891dcd..900d95276 100644 --- a/core/modules/editor/engines/simple.js +++ b/core/modules/editor/engines/simple.js @@ -27,6 +27,13 @@ function SimpleEngine(options) { tag = "input"; } this.domNode = this.widget.document.createElement(tag); + // Set the text + if(this.widget.editTag === "textarea") { + this.domNode.appendChild(this.widget.document.createTextNode(this.value)); + } else { + this.domNode.value = this.value; + } + // Set the attributes if(this.widget.editType) { this.domNode.setAttribute("type",this.widget.editType); } @@ -42,12 +49,6 @@ function SimpleEngine(options) { if(this.widget.editClass) { this.domNode.className = this.widget.editClass; } - // Set the text - if(this.widget.editTag === "textarea") { - this.domNode.appendChild(this.widget.document.createTextNode(this.value)); - } else { - this.domNode.value = this.value; - } // Add an input event handler $tw.utils.addEventListeners(this.domNode,[ {name: "focus", handlerObject: this, handlerMethod: "handleFocusEvent"},