javascript – 如何在sharepoint 2013博客(Office365)上使用SyntaxHighlighter?
作者:互联网
我正在尝试在sharepoint 2013博客站点(office365门户网站)上使用SyntaxHighlighter进行代码突出显示.
这是我放在母版页头部的代码(之前加载了js和css资源):
<script type="text/javascript">
function sh(){
SyntaxHighlighter.highlight();
};
// executed when SP load completes
_spBodyOnLoadFunctionNames.push("sh");
</script>
_spBodyOnLoadFunctionNames应该提供一种在加载页面事件之后运行函数的机制,但它似乎从未执行过.
从开发工具(控制台)运行我的sh函数正在按预期工作.
有没有人知道,我使用的是正确的活动吗?
解决方法:
在init.js中声明的_spBodyOnLoadFunctionNames数组(它是SharePoint JavaScript库的一部分)
根据init.js:
AttachEvent("DOMContentLoaded", _spBodyOnLoadWrapper, document);
window.onload = _spBodyOnLoadWrapper;
哪里
function _spBodyOnLoadWrapper() {
ExecuteOrDelayUntilScriptLoaded(ProcessDefaultOnLoad, "core.js");
//the remaining code is omitted for clarity..
}
function ProcessDefaultOnLoad() {
ProcessOnLoadFunctionNames(_spBodyOnLoadFunctionNames);
//the remaining code is omitted for clarity..
}
function ProcessOnLoadFunctionNames(onLoadFunctionNames) {
if (onLoadFunctionNames != null) {
for (var i = 0; i < onl oadFunctionNames.length; i++) {
var expr = "if(typeof(" + onl oadFunctionNames[i] + ")=='function'){" + onl oadFunctionNames[i] + "();}";
eval(expr);
}
onl oadFunctionNames = [];
}
}
总而言之,指定的方法是在加载页面事件之后运行函数的适当机制.
事实上它对我很有用(见下图)
确保在初始化_spBodyOnLoadFunctionNames之前加载了init.js库.
或者,您可以尝试以下方法:
<script type="text/javascript">
function sh(){
SyntaxHighlighter.highlight();
};
ExecuteOrDelayUntilScriptLoaded(sh, "core.js");
</script>
结果
标签:javascript,events,syntax-highlighting,office365,sharepoint-2013 来源: https://codeday.me/bug/20190703/1362218.html