Running TinyMCE in a Shadow DOM
Running TinyMCE in a Shadow DOM
Running a TinyMCE instance inside a Shadow DOM is not, currently, supported. |
Running a TinyMCE instance — whether in classic mode or inline mode — inside a Shadow DOM will, likely, work.
For example:
<div id="shadow-host"></div>
<script type="text/javascript">
const shadowHost = document.getElementById('shadow-host');
// Note: Closed shadow roots are not currently, even experimentally supported.
const shadow = shadowHost.attachShadow({mode: 'open'});
const node = document.createElement('textarea');
node.value = 'Text added to the <em>TinyMCE</em> editor instance <strong>on loading.</strong>';
shadow.appendChild(node);
tinymce.init({
// Note: use ‘target’ to specify the node the TinyMCE editor instance replaces.
// Do not use ‘selector’.
target: node,
plugins: [
"advlist", "anchor", "autolink", "charmap", "code", "fullscreen",
"help", "image", "insertdatetime", "link", "lists", "media",
"preview", "searchreplace", "table", "visualblocks",
],
toolbar: "undo redo | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
});
</script>
But TinyMCE does not, currently, check its host node for evidence it is inside a Shadow DOM (eg, checking for the #shadow-root
string immediately before the host node’s opening tag).
Consequently, while a TinyMCE instance will likely work as expected inside a Shadow DOM, TinyMCE instances are not, currently, supported inside Shadow DOMs.