在使用SharePoint 2013的JOM時,出現以下問題:
ReferenceError: SP is not defined
經反覆試驗和搜尋,得出以下兩種方式:
一、直接引用JS檔案,引用順序很重要:
<script type="text/javascript" src="https://nn.sharepoint.com/teams/ap1/gct/_layouts/15/MicrosoftAjax.js"></script> <script type="text/javascript" src="https://nn.sharepoint.com/teams/ap1/gct/_layouts/15/SP.Runtime.js"></script> <script type="text/javascript" src="https://nn.sharepoint.com/teams/ap1/gct/_layouts/15/SP.js"></script> <script type="text/javascript" src="https://nn.sharepoint.com/teams/ap1/gct/_layouts/15/SP.RequestExecutor.js"></script> <script src="https://nn.sharepoint.com/teams/ap1/gct/SiteAssets/jquery-1.9.1.js"></script> <script type="text/javascript"> var hostweburl ="https://nn.sharepoint.com/teams/ap1/gct"; $(document).ready(function () { var scriptbase = hostweburl + "/_layouts/15/"; //ExecuteOrDelayUntilScriptLoaded(initializePage, "sp.js"); initializePage(); }); function initializePage() { var context = SP.ClientContext.get_current(); var user = context.get_web().get_currentUser(); // This code runs when the DOM is ready and creates a context object which is needed to use the SharePoint object model $(document).ready(function () { getUserName(); }); // This function prepares, loads, and then executes a SharePoint query to get the current users information function getUserName() { context.load(user); context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail); } // This function is executed if the above call is successful // It replaces the contents of the 'message' element with the user name function onGetUserNameSuccess() { $('#message').text('Hello ' + user.get_title()); } // This function is executed if the above call fails function onGetUserNameFail(sender, args) { alert('Failed to get user name. Error:' + args.get_message()); } }
二、使用Jquery 的$.getScript 方法
<script type="text/javascript"> var hostweburl ="https://nike.sharepoint.com/teams/ap1/gctech"; $(document).ready(function () { var scriptbase = hostweburl + "/_layouts/15/"; var scriptBase = hostweburl + "/_layouts/15/"; $.getScript(scriptBase + "MicrosoftAjax.js").then(function (data) { return $.getScript(scriptbase + "SP.Runtime.js"); }).then(function (data) { return $.getScript(scriptbase + "SP.js"); }).then(function (data) { $.getScript(scriptBase + "SP.RequestExecutor.js"); }).then(function (data) { alert("Load as order"); /* var ctx = new SP.ClientContext(appWebUrl), factory = new SP.ProxyWebRequestExecutorFactory(appWebUrl), web; ctx.set_webRequestExecutorFactory(factory); web = ctx.get_web(); ctx.load(web); ctx.executeQueryAsync(function() { // log the name of the app web to the console console.log(web.get_title()); }, function(sender, args) { console.log("Error : " + args.get_message()); }); */ }); </script>