微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Prosemirror:为什么在他们的组中插入星星失败并标记示例

如何解决Prosemirror:为什么在他们的组中插入星星失败并标记示例

在 Prosemirror“组和标记”模式示例中(位于 https://prosemirror.net/examples/schema/)(每个人都可以在此处查看其代码 https://glitch.com/edit/#!/tidy-guttural-firewall

如果我让boring_paragraph接受标记(通过评论标记条目,将有可能 使用 "Ctrl-q" 添加链接(参见功能 toggleLink),但为什么插入星星(使用 "Ctrl-Space")仍然失败

let starSchema = new Schema({
      nodes: {
        text: {
          group: "inline",},star: {
          inline: true,group: "inline",todoM() {
            return ["star","?"];
          },parseDOM: [{ tag: "star" }],paragraph: {
          group: "block",content: "inline*",todoM() {
            return ["p",0];
          },parseDOM: [{ tag: "p" }],boring_paragraph: {
          group: "block",content: "text*",// marks: "",// <---- marks is commented,so boring_paragraph can accept marks
          todoM() {
            return ["p",{ class: "boring" },parseDOM: [{ tag: "p.boring",priority: 60 }],doc: {
          content: "block+",marks: {
        shouting: {
          todoM() {
            return ["shouting",parseDOM: [{ tag: "shouting" }],link: {
          attrs: { href: {} },todoM(node) {
            return ["a",{ href: node.attrs.href },parseDOM: [
            {
              tag: "a",getAttrs(dom) {
                return { href: dom.href };
              },],inclusive: false,});

这是 insertStar 命令:为什么 canReplaceWith 测试失败?!

function insertStar(state,dispatch) {
      let type = mySchema.nodes.star;
      let { $from } = state.selection;
      /*

        canReplaceWith(from: number,to: number,type: NodeType,marks: ?⁠[Mark]) → bool
          Test whether replacing the range from to to (by index) with a node of the given type would leave the node's content valid.

      */
      if (!$from.parent.canReplaceWith($from.index(),$from.index(),type)) {
        console.error("insertStar will return false");
        return false;
      }
      /*
        replaceSelectionWith(node: Node,inheritMarks: ?⁠bool) → Transaction
          Replace the selection with the given node. 
          When inheritMarks is true and the content is inline,it inherits the marks from the place where it is inserted.
      */
      dispatch(state.tr.replaceSelectionWith(type.create()));
      return true;
    }

好吧,我认为插入星星与标记无关,但为什么会失败?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?