代码之家  ›  专栏  ›  技术社区  ›  Matthew Savage

从自定义工具栏按钮添加的Sharepoint富内容编辑器咀嚼HTML

  •  1
  • Matthew Savage  · 技术社区  · 15 年前

    摘要

    我被“抛弃”到了一个围绕Sharepoint 2007的项目中(相信我,我对它并不完全满意),其中一个受到追捧的是一种使用富内容区域的方式,让用户输入“富内容”,然后在内容中添加某些“附加功能”,如可扩展的内容区域、对话框等。

    最初的攻击计划是在Sharepoint富内容编辑器工具栏中添加一个自定义按钮,我们有代码来执行此操作,它可以正常工作,等等,并将javascript事件处理程序附加到某些元素(也可以正常工作)上。

    <a> 元素和后续元素 <div> 设置一个对话框(使用jQuery UI来实现这个功能)。当用户单击“插入对话框”按钮时,将在编辑器中插入以下内容:

    <a href="#" class="dialog-trigger">Click me to open the dialog</a>
    <div class="dialog-content">
        this is some dialog content etc
    </div>
    

    当页面加载到.dialog触发器click方法时,获取 a 元素的同级 .dialog-content

    我发现只要你开始编辑 。对话框内容 DIV富内容编辑器开始咀嚼HTML,例如,在以下HTML中添加列表:

    <li><div class=dialog-content>Some list item</div></li>
    <li><div class=dialog-content>Some list item 2</div></li>
    <li><div class=dialog-content>Another list item</div></li>
    

    正如你所想象的那样,这种情况打破了我们正在努力做的。

    总结一下我想问的问题-我们是以完全错误的方式讨论这个问题,还是有办法阻止Sharepoint或其富编辑器修改添加的HTML?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Tim Down    15 年前

    如果你只是把HTML放进编辑器内容中,你将无法阻止编辑器对HTML的干扰。如果您有一些内容必须保持完整,那么您需要将其存储在其他地方,并在编辑器中为其设置一个占位符,该占位符包含实际内容的ID(例如,在 alt 属性)。当编辑器保存时,您需要用真正的HTML内容替换这些占位符,当编辑器加载时,反之亦然。

        2
  •  0
  •   Alex Nolasco    15 年前

    如果在CSS中执行以下操作

    /*.ms-rteCustom-anything else you want*/
    /*e.g.*/
    .ms-rteCustom-DialogTrigger {
        color:#333333
    }
    

    现在,sharepoint编辑器将在样式下显示“DialogTrigger”,并将其作为div应用。

    SPAPI 或者JQuery+SharePoint webservices。

    推荐文章