javascript - 尝试在现代脚本编辑器上运行 JS 代码时出现“SP 未定义”

标签 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>

最佳答案

试试这个:

ExecuteOrDelayUntilScriptLoaded(CheckCurrentUerGroup, "sp.js");

关于javascript - 尝试在现代脚本编辑器上运行 JS 代码时出现“SP 未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806537/

相关文章:

javascript - 从 javascript 调用 asp.net 中的服务器端事件

javascript - VueJS : Pass props inside component of component

javascript - 使用 jQuery 脚本呈现 html 片段

sharepoint - 在一天中的特定时间或特定时间后启动 SharePoint 工作流

perl - 使用 perl 和 webdav 访问共享点

javascript - 在其焦点区域外单击时弹出框不关闭

javascript - 自动更新图像值

asp.net - 在与 Sharepoint 相同的网站中部署 ASP.NET 应用程序

javascript - MOSS 2007 中 InfoPath 表单中的数字签名是否更简单?

sharepoint - 强制共享点要求身份验证