Welcome Back!
I’ve been working on a new project for Inspire Digital.
The project is going to allow site members to produce their own content.
Members have a WYSIWYG editor (using jquery.wysiwyg) for creating content with some basic HTML. I wanted to come up with a way for only those who need the files to download the files.
Previously in this sort of situation I have simply included the script and css files within the form, but this is not valid HTML.
So … Loading Javascript and CSS dynamically with jQuery to the rescue!
Loading JavaScript is built-in to jQuery, but you need to create CSS elements yourself.
The approach places a class on the text area we want to be WYSIWYG, then we detect that class, load the CSS and JavaScript and initialise the editor. Easy!
$(document).ready( function() {
if ($('.wysiwyg_editor')) {
$("head").append("<link>");
css = $("head").children(":last");
css.attr({
rel: "stylesheet",
type: "text/css",
href: "/javascripts/jwysiwyg/jquery.wysiwyg.css"
});
$.getScript("/javascripts/jwysiwyg/jquery.wysiwyg.js", function(){
//wait before initialising to prevent intermittent load error
setTimeout("init_wysiwyg_editor()",250);
});
}
});
function init_wysiwyg_editor() {
$(".wysiwyg_editor").wysiwyg();
}
The only gotcha I found was that calling $(“.wysiwyg_editor”).wysiwyg(); would occasionally error with an undefined method unless I put a momentary timeout in before calling. I think this was the result of the browser making the call while still interpreting the freshly loaded script.