如何利用自定义样式& SharePoint 2010 CEWP中的标记样式(100%JavaScript解决方案)

时间:2011-09-30 20:31:28

标签: sharepoint sharepoint-2010 web-parts cewp

简而言之,通过RichHtmlField,我们可以自定义哪些Styles&标记样式显示在功能区的下拉列表中。使用OOTB内容编辑器Web部件,我们不能。

在查询/对比RichHtmlField与CEWP(发布的HTML / JavaScript)后,我确实找到了一个JavaScript解决方案。

当RichHtmlField发出页面脚本来初始化字段控件时,CEWP不会发出这样的初始化脚本。此外,RichHtmlField发出的HTML属性数量明显多于CEWP,其中两个属性为 PrefixStyleSheet StyleSheet

PrefixStyleSheet 标识下拉菜单中使用的样式表前缀。 StyleSheet 是品牌css文件的服务器相对网址。

所以,所有这些都是真的,我们应该能够使用jQuery初始化带有品牌样式表的CEWP:

<script type="text/javascript">
 ExecuteOrDelayUntilScriptLoaded(function() {

 // window.setTimeout(function() {

 $("div[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"),
        editSettings = $("#" + id);

    if(editSettings.length > 0 && editSettings[0].PrefixStyleSheet != 'yourcustom-rte') {
       editSettings[0]['PrefixStyleSheet'] = 'yourcustom-rte';
       editSettings[0]['StyleSheet'] = '\u002fStyle Library\u002fen-US\u002fThemable\u002fCore Styles\u002f<somecustomstylesheet>.css';
       RTE.Canvas.fixRegion(id, false);
    }

 });

// }, 2000);

}, "sp.ribbon.js");

</script>

我希望这有助于某人。这段代码可能会有很多不同的方向。我只是介绍基本面。如果将其添加到EditModePanel内的母版页,它将跨站点工作。

那里有一个计时器,因为根据脚本的加载顺序,某些东西可能会弄乱你完成后所做的事情。让我知道这是否有效/不适合您。

在某个地方保持针对此问题的解决方案的运行记录会很酷。

干杯,

中号

1 个答案:

答案 0 :(得分:2)

不管你信不信,这篇帖子已经晚了4年了!

为了让它发挥作用我必须改变它:

 $("td[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"); 
        editSettings = $("#" + id);

谢谢