知行社区 发表于 4 天前

关于 X5 编辑器粘贴多级列表异常的澄清与建议 New

各位好,


看到此前关于“粘贴多级列表出现重复和序号错乱”的讨论中,有观点认为这是“Word 兼容性问题”或“JSON 编辑器天然不支持 HTML 粘贴”。我想就此稍作澄清,以便更准确地定位问题:



[*]1. {content}
[*]2. {content}
[*]3. {content}
[*]4. {content}


建议官方能否将此场景纳入编辑器粘贴解析的测试用例?哪怕后续通过插件优化,也希望能先确认这是一个可复现的解析缺陷,而非“预期行为”。


感谢团队对 X5 的投入,也期待产品在现代化的同时,继续守护 Discuz! 一贯的实用性和稳定性。

小冰 发表于 4 天前

如果需要把Word的内容比较方便的进入编辑器,推荐使用我们的这个插件~~
https://addon.dismall.com/plugins/hl_wordimport.html

ROBOT 发表于 4 天前

注意,我并不是为自己的网站寻求解决方案,而是给官网的X5编辑器寻找BUG。

我的X3.5运行正常,发帖也正常,详见此帖的比较图:https://www.dismall.com/thread-27399-1-1.html

yusr 发表于 4 天前

看到了关键词word,仅为推荐插件,如不需要,请忽略

::Bra 发表于 4 天前

没完没了的有意义吗?技术上的事情,跟你说了你又不懂也不听,这样钻牛角尖一直发帖多让人讨厌呀。

我从豆包这些AI生成的内容,复制粘贴到wps里都经常是混乱的,更别说一个在线编辑器了。

新的json编辑器属于区块编辑器,技术上完全不同了,老的HTML内容粘贴进去,比如有序列表无序李彪,不是解析的事情,而是需要变成单独一个内容块,本身就存在格式屏障。纠结于这个问题毫无意义,你可以选择继续用bbcode编辑器,就不存在这些问题了

IT618应用中心 发表于 4 天前

这是用豆包生成的 无序列表、有序列表 标准代码样式,全文粘贴过来没有发现问题,要区分是否为ul li、ol li, 很多网站包括discuz老编辑器列表都是 ul li,通过css样式指定的是有序 还是 无序,这粘贴过来都是ul li,怎么区分?
       

                        到此为止吧,能优化的官方肯定会尽力优化,编辑器是个复杂问题,要一直揪着一个细节不放,就没完了,市面上各种编辑器都有各种不完美的地方。
       

                                       
                           
            豆包生成的代码预览截图1
      
   

                                       
                           
            豆包生成的代码预览截图2
      
   

                                       
                           
            粘贴后
      
   

                                       
                           
            粘贴后
      
   

.ce-block {    margin-bottom: 20px;}.ce-block__content,.ce-toolbar__content {        /* max-width:calc(100% - 50px) */        margin-left: auto;    margin-right: auto;}.ce-paragraph {    line-height: 1.6em;    outline: none;    text-indent: 2em;    font-size: 16px;}.ce-paragraph--right {    text-align: right;}.ce-paragraph--center {    text-align: center;}.ce-paragraph--left {    text-align: left;}.ce-paragraph--justify {    text-align: justify;}.ce-paragraph-text-indent {    text-align: justify;}.ce-paragraph:empty::before{content: attr(data-placeholder);color: #707684;font-weight: normal;opacity: 0;}/** Show placeholder at the first paragraph if Editor is empty */.codex-editor--empty .ce-block:first-child .ce-paragraph:empty::before {opacity: 1;}.codex-editor--toolbox-opened .ce-block:first-child .ce-paragraph:empty::before,.codex-editor--empty .ce-block:first-child .ce-paragraph:empty:focus::before {opacity: 0;}.ce-paragraph p:first-of-type{    margin-top: 0;}.ce-paragraph p:last-of-type{    margin-bottom: 0;}.svg-icon {    width: 1em;    height: 1em;}.svg-icon path,.svg-icon polygon,.svg-icon rect {    fill: #4691f6;}.svg-icon circle {    stroke: #4691f6;    stroke-width: 1;}.ce-block {    margin-bottom: 20px;}.ce-block__content,.ce-toolbar__content {        /* max-width:calc(100% - 50px) */        margin-left: auto;    margin-right: auto;}.image-tool {--bg-color: #cdd1e0;--front-color: #388ae5;--border-color: #e8e8eb;}.image-tool__image {    border-radius: 3px;    overflow: hidden;    margin-bottom: 10px;}.image-tool__image-picture {      max-width: 100%;      vertical-align: bottom;      display: block;      margin-left: auto;      margin-right: auto;    }.image-tool__image-preloader {      width: 50px;      height: 50px;      border-radius: 50%;      background-size: cover;      margin: auto;      position: relative;      background-color: #cdd1e0;      background-position: center center;    }.image-tool__image-preloader::after {      content: "";      position: absolute;      z-index: 3;      width: 60px;      height: 60px;      border-radius: 50%;      border: 2px solid #cdd1e0;      border-top-color: #388ae5;      left: 50%;      top: 50%;      margin-top: -30px;      margin-left: -30px;      animation: image-preloader-spin 2s infinite linear;      box-sizing: border-box;      }.image-tool__caption::before {      position: absolute !important;      content: attr(data-placeholder);      color: #707684;      font-weight: normal;      display: none;    }.image-tool__caption:empty::before {      display: block;      }.image-tool__caption:empty:focus::before {      display: none;      }.image-tool--empty .image-tool__image {      display: none;    }.image-tool--empty .image-tool__caption, .image-tool--loading .image-tool__caption {      display: none;    }.image-tool .cdx-button {    display: flex;    align-items: center;    justify-content: center;}.image-tool .cdx-button svg {      height: auto;      margin: 0 6px 0 0;    }.image-tool--filled .cdx-button {      display: none;    }.image-tool--filled .image-tool__image-preloader {      display: none;      }.image-tool--loading .image-tool__image {      min-height: 200px;      display: flex;      border: 1px solid #e8e8eb;      background-color: #fff;    }.image-tool--loading .image-tool__image-picture {      display: none;      }.image-tool--loading .cdx-button {      display: none;    }/**   * Tunes   * ----------------   */.image-tool--withBorder .image-tool__image {      border: 1px solid #e8e8eb;    }.image-tool--withBackground .image-tool__image {      padding: 15px;      background: #cdd1e0;    }.image-tool--withBackground .image-tool__image-picture {      max-width: 60%;      margin: 0 auto;      }.image-tool--stretched .image-tool__image-picture {      width: 100%;      }.image-tool__caption {                text-align: center;                font-size: 14px;                color: #a3a3a3;        }@keyframes image-preloader-spin {0% {    transform: rotate(0deg);}100% {    transform: rotate(360deg);}}.inline-code {background: rgba(250, 239, 240, 0.78);color: #b44437;padding: 3px 4px;border-radius: 5px;margin: 0 1px;font-family: inherit;font-size: 0.86em;font-weight: 500;letter-spacing: 0.3px;}

小冰 发表于 4 天前

再看个图,discuz老编辑器发的 有序列表、无序列表 复制粘贴到 wps 的 word 里,你看下效果。问题在于复制的原内容都是ul li,没有区别。
       

                                       
                           
            discuz老编辑器发的 有序列表、无序列表
      
   

                                       
                           
            复制粘贴到 wps 的 word 里
      
   

.ce-block {    margin-bottom: 20px;}.ce-block__content,.ce-toolbar__content {        /* max-width:calc(100% - 50px) */        margin-left: auto;    margin-right: auto;}.ce-paragraph {    line-height: 1.6em;    outline: none;    text-indent: 2em;    font-size: 16px;}.ce-paragraph--right {    text-align: right;}.ce-paragraph--center {    text-align: center;}.ce-paragraph--left {    text-align: left;}.ce-paragraph--justify {    text-align: justify;}.ce-paragraph-text-indent {    text-align: justify;}.ce-paragraph:empty::before{content: attr(data-placeholder);color: #707684;font-weight: normal;opacity: 0;}/** Show placeholder at the first paragraph if Editor is empty */.codex-editor--empty .ce-block:first-child .ce-paragraph:empty::before {opacity: 1;}.codex-editor--toolbox-opened .ce-block:first-child .ce-paragraph:empty::before,.codex-editor--empty .ce-block:first-child .ce-paragraph:empty:focus::before {opacity: 0;}.ce-paragraph p:first-of-type{    margin-top: 0;}.ce-paragraph p:last-of-type{    margin-bottom: 0;}.svg-icon {    width: 1em;    height: 1em;}.svg-icon path,.svg-icon polygon,.svg-icon rect {    fill: #4691f6;}.svg-icon circle {    stroke: #4691f6;    stroke-width: 1;}.ce-block {    margin-bottom: 20px;}.ce-block__content,.ce-toolbar__content {        /* max-width:calc(100% - 50px) */        margin-left: auto;    margin-right: auto;}.image-tool {--bg-color: #cdd1e0;--front-color: #388ae5;--border-color: #e8e8eb;}.image-tool__image {    border-radius: 3px;    overflow: hidden;    margin-bottom: 10px;}.image-tool__image-picture {      max-width: 100%;      vertical-align: bottom;      display: block;      margin-left: auto;      margin-right: auto;    }.image-tool__image-preloader {      width: 50px;      height: 50px;      border-radius: 50%;      background-size: cover;      margin: auto;      position: relative;      background-color: #cdd1e0;      background-position: center center;    }.image-tool__image-preloader::after {      content: "";      position: absolute;      z-index: 3;      width: 60px;      height: 60px;      border-radius: 50%;      border: 2px solid #cdd1e0;      border-top-color: #388ae5;      left: 50%;      top: 50%;      margin-top: -30px;      margin-left: -30px;      animation: image-preloader-spin 2s infinite linear;      box-sizing: border-box;      }.image-tool__caption::before {      position: absolute !important;      content: attr(data-placeholder);      color: #707684;      font-weight: normal;      display: none;    }.image-tool__caption:empty::before {      display: block;      }.image-tool__caption:empty:focus::before {      display: none;      }.image-tool--empty .image-tool__image {      display: none;    }.image-tool--empty .image-tool__caption, .image-tool--loading .image-tool__caption {      display: none;    }.image-tool .cdx-button {    display: flex;    align-items: center;    justify-content: center;}.image-tool .cdx-button svg {      height: auto;      margin: 0 6px 0 0;    }.image-tool--filled .cdx-button {      display: none;    }.image-tool--filled .image-tool__image-preloader {      display: none;      }.image-tool--loading .image-tool__image {      min-height: 200px;      display: flex;      border: 1px solid #e8e8eb;      background-color: #fff;    }.image-tool--loading .image-tool__image-picture {      display: none;      }.image-tool--loading .cdx-button {      display: none;    }/**   * Tunes   * ----------------   */.image-tool--withBorder .image-tool__image {      border: 1px solid #e8e8eb;    }.image-tool--withBackground .image-tool__image {      padding: 15px;      background: #cdd1e0;    }.image-tool--withBackground .image-tool__image-picture {      max-width: 60%;      margin: 0 auto;      }.image-tool--stretched .image-tool__image-picture {      width: 100%;      }.image-tool__caption {                text-align: center;                font-size: 14px;                color: #a3a3a3;        }@keyframes image-preloader-spin {0% {    transform: rotate(0deg);}100% {    transform: rotate(360deg);}}.inline-code {background: rgba(250, 239, 240, 0.78);color: #b44437;padding: 3px 4px;border-radius: 5px;margin: 0 1px;font-family: inherit;font-size: 0.86em;font-weight: 500;letter-spacing: 0.3px;}

IT618应用中心 发表于 4 天前

云诺 发表于 2025-11-11 15:30
这是用豆包生成的 无序列表、有序列表 标准代码样式,全文粘贴过来没有发现问题,要区分是否为  ul li ...                        谢谢您的技术分析。您提到的ul/ol区分我完全理解,这对于普通用户而言确实是个黑盒。他们最直观的感受就是粘贴后内容变多、结构错乱,这直接动摇了发帖的基本体验。样式不完美尚可接受,内容无故重复却是必须解决的致命问题。
       

                        想和您探讨一下:以您的开发经验来看,在 JSON 区块编辑器的架构下,出现这种“内容复制性重复”的情况,是一个无法逾越的“技术屏障”吗?
       

.ce-block {    margin-bottom: 20px;}.ce-block__content,.ce-toolbar__content {        /* max-width:calc(100% - 50px) */        margin-left: auto;    margin-right: auto;}.ce-paragraph {    line-height: 1.6em;    outline: none;    text-indent: 2em;    font-size: 16px;}.ce-paragraph--right {    text-align: right;}.ce-paragraph--center {    text-align: center;}.ce-paragraph--left {    text-align: left;}.ce-paragraph--justify {    text-align: justify;}.ce-paragraph-text-indent {    text-align: justify;}.ce-paragraph:empty::before{content: attr(data-placeholder);color: #707684;font-weight: normal;opacity: 0;}/** Show placeholder at the first paragraph if Editor is empty */.codex-editor--empty .ce-block:first-child .ce-paragraph:empty::before {opacity: 1;}.codex-editor--toolbox-opened .ce-block:first-child .ce-paragraph:empty::before,.codex-editor--empty .ce-block:first-child .ce-paragraph:empty:focus::before {opacity: 0;}.ce-paragraph p:first-of-type{    margin-top: 0;}.ce-paragraph p:last-of-type{    margin-bottom: 0;}.svg-icon {    width: 1em;    height: 1em;}.svg-icon path,.svg-icon polygon,.svg-icon rect {    fill: #4691f6;}.svg-icon circle {    stroke: #4691f6;    stroke-width: 1;}.inline-code {background: rgba(250, 239, 240, 0.78);color: #b44437;padding: 3px 4px;border-radius: 5px;margin: 0 1px;font-family: inherit;font-size: 0.86em;font-weight: 500;letter-spacing: 0.3px;}

可可的可 发表于 4 天前

极端个例总是存在的,我们上面也都给你回复了,我们都去测试了从豆包等AI复制,从word复制这些列表,均正常显示。但从DZ老帖子带ul->li里面去复制,那不太可能完全兼容。

对于个例问题,不宜抓着钻牛角尖

IT618应用中心 发表于 4 天前

刚才从多个位置 复制、粘贴 列表内容进行测试,并未出现重复的问题,说以属于特殊情况,不是普遍存在的现象;

JSON编辑器属于区块编辑器,每个功能样式可能都是一个独立的区块,如果复制的原有内容本身底层代码结构很乱,粘贴过来分离区块可能会出现样式问题,这确实无法保证,你粘贴到wps的word里,也不会是完全一致
页: [1]
查看完整版本: 关于 X5 编辑器粘贴多级列表异常的澄清与建议 New