简而言之,使用RichHtmlField,我们可以自定义哪种样式和标记样式出现在条带上的下拉列表中。使用OOTB内容编辑器Web部件,我们不能。
在询问/对比了RichHtmlField与CEWP (发出的HTML/ JavaScript )之后,我确实找到了一个JavaScript解决方案。
当RichHtmlField发出一个页面脚本来初始化字段控件时,CEWP不会发出这样的初始化脚本。此外,PrefixStyleSheet与StyleSheet相比,RichHtmlField释放的HTML属性数量要多得多,其中两个属性是StyleSheet。
PrefixStyleSheet标识下拉菜单中使用的样式表前缀。StyleSheet是一个与品牌css文件相对的服务器url。
因此,如果所有这些都是真的,我们应该能够使用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中的母版页中,它将跨站点工作。
里面有一个计时器,因为根据脚本加载的顺序,可能会使您在完成之后所做的事情变得一团糟。如果这对你有用/不管用,请告诉我。
将这个问题的解决方案记录在某个地方是很酷的。
干杯,
我
发布于 2016-05-19 15:33:51
信不信由你,迟了4年,这篇文章是有帮助的!
为了使它发挥作用,我不得不改变这一点:
$("td[RteRedirect]").each(function() {
var id = $(this).attr("RteRedirect");
editSettings = $("#" + id);谢谢
https://stackoverflow.com/questions/7615767
复制相似问题