使用 jQuery / javascript 如何检查 JS 文件 ( SP.JS) 是否已在页面中调用?

use*_*808 3 javascript sharepoint jquery document-ready

我想检查某个特定的 JS 文件是否已加载到 document.ready 中。

像这样的东西:

if(file already called/loaded) { // my code }
else {//some other code}
Run Code Online (Sandbox Code Playgroud)

JS 文件不是任何插件。

它基本上是一个与 SharePoint 相关的 JS 文件,例如 Sp.JS。

我们只知道文件名。

[更新 - 添加代码]

我添加了以下代码,它在控制台中抛出错误: SP.Runtime.js 已加载。

如果我删除 SP.Runtime.js 的加载,我的代码将无法在默认情况下未加载 Runtime.Js 的某些页面中运行。

$(document).ready(function() {
    var scriptbase = _spPageContextInfo.webServerRelativeUrl + "/_layouts/15/";
    $.getScript(scriptbase + "init.js",
    function() {
        $.getScript(scriptbase + "SP.Runtime.js",
        function() {
            $.getScript(scriptbase + "SP.js",
            function() {
                    $.getScript(scriptbase + "SP.Taxonomy.js",
                    function() {
                        context = SP.ClientContext.get_current();
                       // My custom function //

                    });
            });
    });
    });
});
Run Code Online (Sandbox Code Playgroud)

请建议。

谢谢

Vad*_*hev 5

SharePoint JavaScript 库,特别是SP.SOD命名空间包含用于加载/确保 JavaScript 文件的方法。

  1. SP.SOD.executeOrDelayUntilScriptLoaded - 如果加载包含指定函数的文件,则执行该函数,例如:

    ExecuteOrDelayUntilScriptLoaded(myfunc, "SP.js");
    
    function myfunc()
    {
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在这种情况下,将在加载 sp.js 文件myfunc调用

  2. SP.SOD.executeFunc - 确保加载包含指定函数的指定文件,然后运行指定的回调函数,例如:

    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', 
     function (){
         //your code goes here...
     });
    
    Run Code Online (Sandbox Code Playgroud)

    该行为与前面的示例类似,但主要区别在于该函数还支持按需加载脚本。