Merge pull request #2023 from ajaxorg/edit_textarea
Do not hang the browser when ace.edit is called for textarea
This commit is contained in:
commit
f3d4147f6b
1 changed files with 15 additions and 4 deletions
|
|
@ -79,11 +79,21 @@ exports.edit = function(el) {
|
||||||
throw new Error("ace.edit can't find div #" + _id);
|
throw new Error("ace.edit can't find div #" + _id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (el.env && el.env.editor instanceof Editor)
|
if (el && el.env && el.env.editor instanceof Editor)
|
||||||
return el.env.editor;
|
return el.env.editor;
|
||||||
|
|
||||||
var doc = exports.createEditSession(dom.getInnerText(el));
|
var value = "";
|
||||||
el.innerHTML = '';
|
if (el && /input|textarea/i.test(el.tagName)) {
|
||||||
|
var oldNode = el;
|
||||||
|
value = oldNode.value;
|
||||||
|
el = dom.createElement("pre");
|
||||||
|
oldNode.parentNode.replaceChild(el, oldNode);
|
||||||
|
} else {
|
||||||
|
value = dom.getInnerText(el);
|
||||||
|
el.innerHTML = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
var doc = exports.createEditSession(value);
|
||||||
|
|
||||||
var editor = new Editor(new Renderer(el));
|
var editor = new Editor(new Renderer(el));
|
||||||
editor.setSession(doc);
|
editor.setSession(doc);
|
||||||
|
|
@ -93,11 +103,12 @@ exports.edit = function(el) {
|
||||||
editor: editor,
|
editor: editor,
|
||||||
onResize: editor.resize.bind(editor, null)
|
onResize: editor.resize.bind(editor, null)
|
||||||
};
|
};
|
||||||
|
if (oldNode) env.textarea = oldNode;
|
||||||
event.addListener(window, "resize", env.onResize);
|
event.addListener(window, "resize", env.onResize);
|
||||||
editor.on("destroy", function() {
|
editor.on("destroy", function() {
|
||||||
event.removeListener(window, "resize", env.onResize);
|
event.removeListener(window, "resize", env.onResize);
|
||||||
});
|
});
|
||||||
el.env = editor.env = env;
|
editor.container.env = editor.env = env;
|
||||||
return editor;
|
return editor;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue