开发者

TinyMCE: j is undefined

What's wrong with this code? I get "J is undefined message" after insert the image. I think this happends while i try to close itself.

var ImageDialog = 
{
    init : function()
    {
        var f = document.forms[0], ed = tinyMCEPopup.editor;
        e = ed.selection.getNode();
        if (e.nodeName == 'IMG')
        {
            f.src.value = ed.dom.getAttrib(e, 'src');
        }
    },

    update : 开发者_运维技巧function()
    {
        var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;

        tinyMCEPopup.restoreSelection();

        if (f.src.value === '')
        {
            if (ed.selection.getNode().nodeName == 'IMG')
            {
                ed.dom.remove(ed.selection.getNode());
                ed.execCommand('mceRepaint');
            }

            tinyMCEPopup.close();
            return;
        }

        tinymce.extend(args,
        {
            src : f.src.value
        });

        el = ed.selection.getNode();

        if (el && el.nodeName == 'IMG')
        {
            ed.dom.setAttribs(el, args);
            tinyMCEPopup.editor.execCommand('mceRepaint');
            tinyMCEPopup.editor.focus();
        }
        else
        {
            ed.execCommand('mceInsertContent', false, '<img src="'+args['src']+'" id="_mce_temp_rob" alt="" />', {skip_undo : 1});
            ed.undoManager.add();
            ed.focus();
            ed.selection.select(ed.dom.select('#_mce_temp_rob')[0]);
            ed.selection.collapse(0);
            ed.dom.setAttrib('_mce_temp_rob', 'id', '');
            tinyMCEPopup.storeSelection();
        }

        tinyMCEPopup.close();
    },

    getImageData : function()
    {
        var f = document.forms[0];
        this.preloadImg = new Image();
        this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
    }
};

tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);


it's a tinymce bug. Internally, the tinymce code uses a <span id="mce_marker"></span> to remember the caret-position when pasting. when validating the resulting fragment, after the paste, the span is deemed invalid and removed, thus breaking the code by removing the marker. This issue will be fixed in the next official tinymce minor release. There are some workarounds for this kind of issue. One is to add to add id and mce-data-type attribute to spans as valid elements (init setting). Example:

// The valid_elements option defines which elements will remain in the edited text when the editor saves.
    valid_elements: "@[id|class|title|style]," +
    "a[name|href|target|title]," +
    "#p,-ol,-ul,-li,br,img[src],-sub,-sup,-b,-i,-u" +
    "-span[data-mce-type]",
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜