notadd / neditor

基于 ueditor的更现代化的富文本编辑器,支持HTTPS
https://demo.neditor.notadd.com/
MIT License
1.91k stars 267 forks source link

涂鸦上传地址插入报错解决办法 #123

Closed Skqing closed 5 years ago

Skqing commented 5 years ago

Neditor-2.1.16 涂鸦上传成功后,直接返回图片地址,在插入时以下代码scrawl.js,653行导致报错:

if(srcFieldKeys.length > 1) {
                        function setSrc(obj, keys, index) {
                            obj = obj[keys[index]];
                            if (index < keys.length - 1) {
                                setSrc(obj, keys, index += 1)
                            } else {
                                src = obj;
                            }
                        }
                        setSrc(data, srcFieldKeys, 0);
                    } else {
                        src = data[srcField];
                    }

报错如下:

Uncaught TypeError: Cannot read property 'xxx' of undefined
    at setSrc (scrawl.js:655)
    at setSrc (scrawl.js:657)
    at scrawl.<anonymous> (scrawl.js:662)
    at Object.<anonymous> (neditor.service.js:196)
    at i (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at z (jquery.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery.min.js:4)

修改后代码:

if (data.responseSuccess) {
                    var imgObj = {},
                        // srcField = data.scrawlSrcField || 'url',
                        src = data.scrawlSrcField,
                        // srcFieldKeys = srcField.split('.'),
                        prefix = editor.options.scrawlUrlPrefix;

                    // if(srcFieldKeys.length > 1) {
                    //     function setSrc(obj, keys, index) {
                    //         obj = obj[keys[index]];
                    //         if (index < keys.length - 1) {
                    //             setSrc(obj, keys, index += 1)
                    //         } else {
                    //             src = obj;
                    //         }
                    //     }
                    //     setSrc(data, srcFieldKeys, 0);
                    // } else {
                    //     src = data[srcField];
                    // }

                    imgObj.src = prefix + src;
                    imgObj._src = prefix + src;
                    imgObj.alt = data.original || '';
                    editor.execCommand("insertImage", imgObj);
                    dialog.close();
                } else {
                    addMaskLayer(data.message + "&nbsp;&nbsp;&nbsp;<input type='button' value='" + lang.continueBtn + "'  onclick='removeMaskLayer()'/>");
                }

本人注释掉了一部分代码,因为是直接返回的图片地址,不需要做额外处理了。

zuohuadong commented 5 years ago

可以直接提交PR ,这样贡献者名单里也会出现

Skqing commented 5 years ago

修改后的代码为什么是这样的呢

 var imgObj = {},
// srcField = data.scrawlSrcField || 'url',
src = '',

src在下面一直没赋值啊 不是应该是

 var imgObj = {},
src  = data.scrawlSrcField || 'url';

吗?

zuohuadong commented 5 years ago

修改后的代码为什么是这样的呢

 var imgObj = {},
// srcField = data.scrawlSrcField || 'url',
src = '',

src在下面一直没赋值啊 不是应该是

 var imgObj = {},
src  = data.scrawlSrcField || 'url';

吗?

所以最好是你提交PR 修改下

Skqing commented 5 years ago

好,代码下载有点慢