【发布时间】:2012-10-16 14:49:12
【问题描述】:
我正在尝试让 tinymce edit iframe 与这个美妙的 tabbifier 一起工作:
http://www.barelyfitz.com/projects/tabber
我已经成功安装了它们,并且它们工作得很好。
在我的示例中,我测试了以下内容:
- 加载一个 tinymce 组件并将以下代码保存在带有 HTML 选项的 tinymce iframe 中: 测试
- F5刷新后完美保存结果,并保存在数据库中:
<p>test</p>
tinymce 运行良好。
我进行的下一个测试是使用 tabber:
- 编辑 tinymce 组件框并使用 HTML 选项保存以下代码:
<div class='tabber' id='tabber1'> <div class='tabbertab' title='FIRSTTAB' > test firsttab </div> <div class='tabbertab' title='SECONDTAB' > test secondtab </div> </div>
代码完美保存在数据库中,结果完美加载到输出视图中,显示两个选项卡,每个选项卡都有其内容。
-
问题是在尝试使用 tinymce 再次编辑内容时,选项卡未显示。内容完美加载到 tinymce iframe 中,没有标签。如下图:
测试第一个标签
测试第二个标签
里面的HTML代码不错,之前保存了正确的tabbifier html代码。
问题可能是 tinymce 的 iframe 无法加载或解释 tabber.js 的 javascript 并且它不显示选项卡。 我已经测试了使用此代码在 tinymce iframe 中加载 tabber.js 的 javascript,并且似乎加载了它,但仍然没有显示选项卡:
<script type="text/javascript">
tinyMCE.init({
mode: "exact",
elements: "%s",
theme: "%s",
%s
%s
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true
%s
setup : function(ed)
{
ed.onInit.add(function(ed, evt)
{
alert("entered tiny");
// Load a script from a specific URL using the global script loader
//tinymce.ScriptLoader.load('/js/tabber/tabber.js');
// Load a script using a unique instance of the script loader
//var scriptLoader = new tinymce.dom.ScriptLoader();
//scriptLoader.load('C:\tabber.js');
// Load multiple scripts
var scriptLoader = new tinymce.dom.ScriptLoader();
scriptLoader.add('/js/tabber.js');
scriptLoader.loadQueue(function() { alert('All scripts are now loaded.'); });
});
}
});
</script>
我还检查了 /js/tabber.js 是正确的路径。并在萤火虫看到它正在加载它。 显示了两条警报消息,因此似乎加载了它,但是仍然没有显示tinymce编辑iframe中的选项卡。
欢迎任何帮助,非常感谢。
【问题讨论】:
-
您正试图让标签在富文本编辑器中工作 - 这没有任何意义!您应该改为在选项卡内呈现编辑器。
-
富文本编辑器并非旨在实现 javascript 应用程序。他们可以渲染一些 HTML 和一些 CSS。但它们不是浏览器,它们是添加了富文本增强功能的文本编辑器。
-
我理解它,如果我不能让它工作,那是我的第二件事。我认为可能 tinymce 支持执行和呈现 javascript 输出,因为它允许使用 scriptLoader 在其中执行 javascript。是的,正如您所说,最好的选择是为每个选项卡单独呈现一个富编辑器。我想避免这个选项,因为我不想在我的数据库中添加很多列,每个选项卡都有一个具有丰富内容编辑器的列。但似乎是唯一的方法,非常感谢:)
-
这和你解释的 Stefan 完全一样,只是用 CKEditor 测试过,结果完全一样。
-
这并不一定意味着您必须将列添加到数据库中,尽管通常将字段尽可能分开是一个好主意。通过使用唯一的分隔符来分隔各个字段,可以将一些字段值合并到一个字段中 - 但前提是您确实必须这样做!然后您可以从数据库中读取单个字段并使用 php explode 或 js split 来提取单个字段值。但总的来说,我肯定会尽可能推荐单独的列。
标签: javascript jquery tabs tinymce