问题
I found javascript wysiwyg editor wysiHTML5.
I'm trying to add element <a href=...>
to the editor or just turn on bold programmatically.
My code is:
var editor = new wysihtml5.Editor("textarea", {
toolbar: "toolbar",
stylesheets: "css/wysihtml5.css",
parserRules: wysihtml5ParserRules
});
editor.observe("load", function() {
editor.composer.commands.exec("bold");
});
Am I doing something wrong?
回答1:
Actually no, but you have to be sure that your textarea (iframe) is focused. Try to use on
instead of observe
. Here is a sample code that worked for me with insertHTML.
editor.on("load", function() {
editor.focus();
editor.composer.commands.exec("insertHTML","<a href=....>text</a>");
});
回答2:
mateusmaso's solution gave me the following error:
NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLDocument.execCommand] [Break On This Error] Object.defineProperty(object, property, config);
So I've investigated some more and found the following solution, which (IMO) seems more ok:
var value = 'whatever you want to set';
// The jQuery reference to the textarea
var $ta = $('textarea#your-selector');
// The reference to the wysihtml5 editor - everything is contained within it
var w5ref = $ta.data('wysihtml5');
// Check if you have it
if(w5ref){
// if yes it's really an enhanced / wysihtml5ed textarea
// and use its setter
w5ref.editor.setValue(value);
} else {
// otherwise just simply populate the textarea as you normally would
$ta.html(value);
}
Source
回答3:
assuming you have instantiated the editor previously using $('#textarea-id').wysihtml5()
$('#textarea-id').data("wysihtml5").editor.setValue('new content');
font
来源:https://stackoverflow.com/questions/10739237/insert-html-programmatically-in-wysihtml5-editor