简而言之,通过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内的母版页,它将跨站点工作。
那里有一个计时器,因为根据脚本的加载顺序,某些东西可能会弄乱你完成后所做的事情。让我知道这是否有效/不适合您。
在某个地方保持针对此问题的解决方案的运行记录会很酷。
干杯,
中号
答案 0 :(得分:2)
为了让它发挥作用我必须改变它:
$("td[RteRedirect]").each(function() {
var id = $(this).attr("RteRedirect");
editSettings = $("#" + id);
谢谢