尝试在Modern Script Editor上运行JS代码时“未定义SP”

时间:2019-09-05 13:24:45

标签: javascript sharepoint

我遇到此错误消息,请参考以下行:

SP.SOD.executeFunc('sp.js', CheckCurrentUerGroup);

我对这些东西很陌生,但是是什么原因造成的呢?我想通过以下代码使用基本的重定向机制:

<script src="/_layouts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/_layouts/sp.core.js" type="text/javascript"></script>
<script src="/_layouts/sp.runtime.js" type="text/javascript"></script>
<script src="/_layouts/sp.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
alert("test");

});

<script type="text/javascript">
alert('2nd');
function IsCurrentUserMemberOfGroup(groupName, OnComplete) {
alert('IsCurrentUserMemberOfGroup');
        var currentContext = new SP.ClientContext.get_current();
console.log(currentContext );
    var currentWeb = currentContext.get_web();

    var currentUser = currentContext.get_web().get_currentUser();
console.log(currentUser);

    currentContext.load(currentUser);

    var allGroups = currentWeb.get_siteGroups();
    currentContext.load(allGroups);

    var group = allGroups.getByName(groupName);
    currentContext.load(group);

    var groupUsers = group.get_users();
    currentContext.load(groupUsers);

    currentContext.executeQueryAsync(OnSuccess,OnFailure);

    function OnSuccess(sender, args) {
        var userInGroup = false;
        var groupUserEnumerator = groupUsers.getEnumerator();
        while (groupUserEnumerator.moveNext()) {
            var groupUser = groupUserEnumerator.get_current();
            if (groupUser.get_id() == currentUser.get_id()) {
                userInGroup = true;
                break;
            }
        }  
        OnComplete(userInGroup);
    }

    function OnFailure(sender, args) {
        OnComplete(false);
    }    
}

function CheckCurrentUerGroup() 
{
alert('checkcurrentuergroup');
  IsCurrentUserMemberOfGroup("IT Department", function (isCurrentUserInGroup) 
{
if(isCurrentUserInGroup)
{
    //Redirect to a certain page
    window.location = "httpd://www.youtube.com";
}
  });

}
//$(document).ready(function() {
//CheckCurrentUerGroup();
//
//});

SP.SOD.executeFunc('sp.js', CheckCurrentUerGroup);


</script>

2 个答案:

答案 0 :(得分:2)

尝试一下:

ExecuteOrDelayUntilScriptLoaded(CheckCurrentUerGroup,“ sp.js”);

答案 1 :(得分:0)

测试演示:

<script src="/_layouts/15/MicrosoftAjax.js"></script>
<script src="/_layouts/15/ScriptResx.ashx?name=sp.res&culture=en-us"></script>
<script src="/_layouts/15/sp.runtime.js"></script>
<script src="/_layouts/15/SP.Core.js"></script>
<script src="/_layouts/15/sp.js"></script>    
<script src="/_layouts/15/sp.init.js"></script>
<script type="text/javascript">
    function IsCurrentUserMemberOfGroup(groupName, OnComplete) {
        alert('IsCurrentUserMemberOfGroup');
        var currentContext = new SP.ClientContext.get_current();
        console.log(currentContext);
        var currentWeb = currentContext.get_web();

        var currentUser = currentContext.get_web().get_currentUser();
        console.log(currentUser);

        currentContext.load(currentUser);

        var allGroups = currentWeb.get_siteGroups();
        currentContext.load(allGroups);

        var group = allGroups.getByName(groupName);
        currentContext.load(group);

        var groupUsers = group.get_users();
        currentContext.load(groupUsers);

        currentContext.executeQueryAsync(OnSuccess, OnFailure);
        debugger;
        function OnSuccess(sender, args) {
            debugger;
            var userInGroup = false;
            var groupUserEnumerator = groupUsers.getEnumerator();
            while (groupUserEnumerator.moveNext()) {
                var groupUser = groupUserEnumerator.get_current();
                if (groupUser.get_id() == currentUser.get_id()) {
                    userInGroup = true;
                    break;
                }
            }
            OnComplete(userInGroup);
        }

        function OnFailure(sender, args) {
            debugger;
            OnComplete(false);
        }
    }

    function CheckCurrentUerGroup() {            
        alert('checkcurrentuergroup');
        IsCurrentUserMemberOfGroup("App Dev Members", function (isCurrentUserInGroup) {
            if (isCurrentUserInGroup) {
                //Redirect to a certain page
                window.location = "https://www.youtube.com";
            }
        });

    }
    //$(document).ready(function() {
    //CheckCurrentUerGroup();
    //
    //});        
    //SP.SOD.executeFunc('sp.js', CheckCurrentUerGroup);
    SP.SOD.executeOrDelayUntilScriptLoaded(CheckCurrentUerGroup, "sp.js");
</script>

enter image description here