diff --git a/Classes/Loader.php b/Classes/Loader.php
index ca2379878981a849a3a38e106d5e2e4dd59d1518..78e1c946255eb3710a4fa255bdd72d82b273bb8b 100644
--- a/Classes/Loader.php
+++ b/Classes/Loader.php
@@ -52,7 +52,7 @@ class Loader {
 	 *
 	 * @var array
 	 */
-	protected $tinymceConfiguration = array();
+	protected $tinymceConfiguration = [];
 
 	/**
 	 * Initialization flag
@@ -166,6 +166,9 @@ class Loader {
 			$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Contrib/tinymce/tinymce.min.js';
 			$output = '<script type="text/javascript" src="' . $script . '"></script>';
 
+			$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Contrib/WeakMap/WeakMap.js';
+			$output .= '<script type="text/javascript" src="' . $script . '"></script>';
+
 			$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Contrib/MutationObserver/MutationObserver.js';
 			$output .= '<script type="text/javascript" src="' . $script . '"></script>';
 
@@ -200,6 +203,9 @@ class Loader {
 		$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Contrib/MutationObserver/MutationObserver.js';
 		$pageRenderer->addJsLibrary('MutationObserver', $script, 'text/javascript', FALSE, TRUE, '', TRUE);
 
+		$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Contrib/WeakMap/WeakMap.js';
+		$pageRenderer->addJsLibrary('WeakMap', $script, 'text/javascript', FALSE, TRUE, '', TRUE);
+
 		$script = $GLOBALS['BACK_PATH'] . $pathToTinyMceExtension . 'Resources/Public/JavaScript/Loader.js';
 		$pageRenderer->addJsFile($script, 'text/javascript', FALSE, TRUE, '', TRUE);
 
@@ -214,7 +220,7 @@ class Loader {
 	 * @return array
 	 */
 	protected function prepareTinyMCEConfiguration($configuration) {
-		$configurationArray = array();
+		$configurationArray = [];
 
 		// try to resolve a potential TYPO3 file path
 		$configurationFile = GeneralUtility::getFileAbsFileName($configuration);
diff --git a/Contrib/WeakMap/WeakMap.js b/Contrib/WeakMap/WeakMap.js
new file mode 100644
index 0000000000000000000000000000000000000000..0540742aa30f4ae97da4ec4fd8c70faa08f17645
--- /dev/null
+++ b/Contrib/WeakMap/WeakMap.js
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2012 The Polymer Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file.
+ */
+
+if (typeof WeakMap === 'undefined') {
+  (function() {
+    var defineProperty = Object.defineProperty;
+    var counter = Date.now() % 1e9;
+
+    var WeakMap = function() {
+      this.name = '__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');
+    };
+
+    WeakMap.prototype = {
+      set: function(key, value) {
+        var entry = key[this.name];
+        if (entry && entry[0] === key)
+          entry[1] = value;
+        else
+          defineProperty(key, this.name, {value: [key, value], writable: true});
+        return this;
+      },
+      get: function(key) {
+        var entry;
+        return (entry = key[this.name]) && entry[0] === key ?
+            entry[1] : undefined;
+      },
+      delete: function(key) {
+        var entry = key[this.name];
+        if (!entry) return false;
+        var hasValue = entry[0] === key;
+        entry[0] = entry[1] = undefined;
+        return hasValue;
+      },
+      has: function(key) {
+        var entry = key[this.name];
+        if (!entry) return false;
+        return entry[0] === key;
+      }
+    };
+
+    window.WeakMap = WeakMap;
+  })();
+}
diff --git a/Resources/Public/JavaScript/Loader.js b/Resources/Public/JavaScript/Loader.js
index 4b9a2eef0e16b8ad2991e311161fb1b1772990be..a6e9a8586a93283a81b6473fcb803f02b8718b67 100644
--- a/Resources/Public/JavaScript/Loader.js
+++ b/Resources/Public/JavaScript/Loader.js
@@ -32,7 +32,7 @@ SG.TinyMceLoader = function(tinymce, options) {
 		return console.error('Couldn\'t load dependency tinyMCE, break here.');
 	}
 
-	if (!MutationObserver) {
+	if (!window.MutationObserver) {
 		return console.error('Couldn\'t load dependency MutationObserver, break here.')
 	}