gpt4 book ai didi

javascript - 在 TinyMCE 或 CKEditor 中运行时更改内容 CSS

转载 作者:行者123 更新时间:2023-11-28 10:29:05 25 4
gpt4 key购买 nike

我有一个表单,我想在其中编辑 HTML 模板。它有 2 个文本区域,一个用于 HTML,另一个用于 CSS。

我想使用 TinyMCE 或 CKEditor 作为 HTML 文本区域。

有什么方法可以更改其中任何一个中的 CSS 内容,以匹配运行时 CSS 文本区域中的 CSS,这样当我更改 CSS 时,它会自动加载到编辑器中?

谢谢。

最佳答案

我没有使用 CKEditor 的经验,但我知道使用 TinyMce 是可能的。您需要做的是编写一个自己的插件来提供必要的功能。

在第二个文本区域(带有 css 的文本区域)中的 OnNodeChange 您需要更新第一个编辑器 iframe 的头部。要在特殊操作(例如 onNodeChange)上执行的此代码片段应该为您指明正确的方向:

var DEBUG = false;
var css_code = tinymce.editors[1].getContent(); // get content of 2nd editorinstance on page (your css)


iframe_id = tinymce.editors[0].id+'_ifr';

with(document.getElementById(iframe_id).contentWindow){
var h=document.getElementsByTagName("head");
if (!h.length) {
if (DEBUG) console.log('length of h is null');
return;
}
var newStyleSheet=document.createElement("style");
newStyleSheet.type="text/css";
h[0].appendChild(newStyleSheet);
try{
if (typeof newStyleSheet.styleSheet !== "undefined") {
newStyleSheet.styleSheet.cssText = css_code;
}
else {
newStyleSheet.appendChild(document.createTextNode(css_code));
newStyleSheet.innerHTML=css_code;
}
}

请注意,此代码每次调用时都会添加一个新的样式表 - 从而增加编辑器 iframe 头。所以我认为最好的做法是在应用新样式之前清理最后插入的样式。删除头部的最后一个节点 shozld 就足够了。

关于javascript - 在 TinyMCE 或 CKEditor 中运行时更改内容 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com