我正在尝试使用Zemanta的小部件和Redactor HTML编辑器。我无法让Zemanta找到Redactor的iframe/content
,并且能够在点击其中一个小工具后向其发送更新。
Redactor会创建一个iframe
,但会将真实的textarea
隐藏在幕后,我想在两者之间发送更新,但我无法弄清楚如何同时更新两者。如果我使用textarea
更新ID
,它会有效,但除非我点击code view
,否则我在Redactor中看不到它。如果我使用iframe
类,我会在redactor中看到它,但它不会在textarea
内进行更改,而当我保存时我什么也得不到。
.redactor_frame (redactor IFRAME)
#zemanta_content (textarea)
如何使用Zemanta的小部件更新两者?
get_editor: function () {
var elm = null, win = null, editor = {element: null, property: null, type: null, win: null};
try {
elm = $('.redactor_frame').get(0);
if (elm && elm.contentWindow) {
win = elm.contentWindow;
elm = null;
} else {
elm = $('#zemanta_content').get(0);
}
editor = win && {element: win.document.body, property: 'innerHTML', type: 'RTE', win: win} ||
elm && {element: elm, property: 'value', type: elm.tagName.toLowerCase(), win: null} ||
editor;
} catch (er) {
$.zemanta.log(er);
}
return editor;
}
答案 0 :(得分:2)
来自Zemanta的Andraz。
我不确定这是一个很容易解决的问题,但我们会让我们的前端开发人员看一下这个。
由于Redactor编辑器的行为方式略有不规范,最好的方法是转向他们的支持。
答案 1 :(得分:1)
正如Andraz指出的那样,在这种情况下,覆盖/改变get_editor()是不够的。但是我宁愿指出一个不同的解决方案。其他编辑似乎更新了他们用iframe升级的文本区域,如果不是经常的话,你会看到它们就好像它们保持相同的状态。现在,如果您只使用一个,则可以通过JavaScript将内容从当前活动的内容复制到后台的一些关键操作(保存,更新)。这种方法可以节省大量时间,实现起来可能非常简单。
这对你有帮助吗?