diff --git a/Classes/Loader.php b/Classes/Loader.php index 3cc77cff3f9c9dd467389a4341dc56472e213863..ca2379878981a849a3a38e106d5e2e4dd59d1518 100644 --- a/Classes/Loader.php +++ b/Classes/Loader.php @@ -113,20 +113,30 @@ class Loader { /** * Returns a file that contains the tinyMCE configuration * + * Note: The load dom event cannot be used, because e.g. IRRE adds the javascript + * later on. This leads to code that is never executed. The interval timer hack fixes this + * issue. + * * @return string */ protected function getConfiguration() { $configuration = $this->tinymceConfiguration['preJS']; $configuration .= ' - document.addEventListener( - "DOMContentLoaded", function() { - if (window.tinymce && window.tinymce.init) { - (new SG.TinyMceLoader(window.tinymce, { - ' . $this->replaceTypo3Paths($this->tinymceConfiguration['configurationData']) . ' - })); - } - }, false - ); + var SG = SG || {}; + SG.initTinyMceLoadFunction = function() { + if (SG.initializedTinyMceLoaderInstance) { + return; + } + + if (SG.TinyMceLoader && window.tinymce && window.tinymce.init) { + SG.initializedTinyMceLoaderInstance = new SG.TinyMceLoader(window.tinymce, { + ' . $this->replaceTypo3Paths($this->tinymceConfiguration['configurationData']) . ' + }); + clearInterval(SG.initTinyMceLoadInterval); + } + }; + SG.initTinyMceLoadFunction(); + SG.initTinyMceLoadInterval = window.setInterval(SG.initTinyMceLoadFunction, 1000); '; $configuration .= $this->tinymceConfiguration['postJS'];