Hey guys,
Same as Shimmoril, we've got some pretty heavy stuff coded around the editor, so it's a pretty major task to update the version.
I was able to isolate what piece of code solved the problem. The fix was introduced between 3.4.2 and 3.4.3 and I was able to make 3.4.2 work by updating the code of Editor.setupIframe to take into account the changes from 3.4.3 (the comment "We need to wait for the load event on Gecko" seems to confirm that such a problem was indeed solved there).
Replace the start of the setupIframe method by this:
setupIframe : function(filled) {
var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
// Setup iframe body
if ((!isIE || !tinymce.relaxedDomain) && !filled) {
// We need to wait for the load event on Gecko
if (isGecko && !s.readonly) {
t.getWin().onload = function() {
window.setTimeout(function() {
var b = t.getBody(), undef;
// Editable element needs to have some contents or backspace/delete won't work properly for some odd reason on FF 3.6 or older
b.innerHTML = '<br>';
// Check if Gecko supports contentEditable mode FF2 doesn't
if (b.contentEditable !== undef) {
// Setting the contentEditable off/on seems to force caret mode in the editor and enabled auto focus
b.contentEditable = false;
b.contentEditable = true;
// Caret doesn't get rendered when you mousedown on the HTML element on FF 3.x
t.onMouseDown.add(function(ed, e) {
if (e.target.nodeName === "HTML") {
d.designMode = 'on'; // Render the caret
// Remove design mode again after a while so it has some time to execute
window.setTimeout(function() {
d.designMode = 'off';
t.getBody().focus();
}, 1);
}
});
} else
d.designMode = 'on';
// Call setup frame once the contentEditable/designMode has been initialized
// since the caret won't be rendered some times otherwise.
t.setupIframe(true);
}, 1);
};
}
d.open();
d.write(t.iframeHTML);
d.close();
if (tinymce.relaxedDomain)
d.domain = tinymce.relaxedDomain;
// Wait for iframe onload event on Gecko
if (isGecko && !s.readonly)
return;
}
// It will not steal focus while setting contentEditable
b = t.getBody();
b.disabled = true;
if (!isGecko && !s.readonly)
b.contentEditable = true;
b.disabled = false;
t.schema = new tinymce.html.Schema(s);
The last line of the above is in both versions so you can use that to figure out how far to replace.
I haven't tested this extensively but hope it will help. Note that its simply between 3.4.2 and 3.4.3 so if you're coming from an older version you might need to tweak it.
Finally, I wouldn't really recommend doing this... if you can update TinyMCE to the last version, do it - what I describe here is pretty much last resort 