编程语言
首页 > 编程语言> > javascript – 如何在sharepoint 2013博客(Office365)上使用SyntaxHighlighter?

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