我怎样才能让Zemanta和Redactor一起工作?

时间:2012-07-05 16:48:44

标签: javascript jquery-plugins wysiwyg redactor zemanta

我正在尝试使用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;
            }

2 个答案:

答案 0 :(得分:2)

来自Zemanta的Andraz。

我不确定这是一个很容易解决的问题,但我们会让我们的前端开发人员看一下这个。

由于Redactor编辑器的行为方式略有不规范,最好的方法是转向他们的支持。

答案 1 :(得分:1)

正如Andraz指出的那样,在这种情况下,覆盖/改变get_editor()是不够的。但是我宁愿指出一个不同的解决方案。其他编辑似乎更新了他们用iframe升级的文本区域,如果不是经常的话,你会看到它们就好像它们保持相同的状态。现在,如果您只使用一个,则可以通过JavaScript将内容从当前活动的内容复制到后台的一些关键操作(保存,更新)。这种方法可以节省大量时间,实现起来可能非常简单。

这对你有帮助吗?