为什么 Sharepoint 的 get_current() 方法不一致可用?
Why is Sharepoint's get_current() method inconsistently available?
有了这个Javascript:
function upsertPostTravelListItemTravelerInfo1() {
var clientContext = SP.ClientContext.get_current();
. . .
...我 有时 得到这个错误(并非总是如此,如该方法插入列表的数据所示几次(但其他时间不是) );浏览器控制台(Chrome 开发工具)中显示的错误消息是:
Uncaught TypeError: Cannot read property 'get_current' of undefined
基于 this,我在我的 *.ascx 文件中 Javascript 的顶部尝试了这个:
ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");
...但这引起了一个毛团,上面刻有以下明显偏执的表现:“CustomAction 未定义”
搞什么啊,拉姆齐!正如那句老话所说,我不能因输而赢。如何让 get_current() 始终如一地正确执行?
所以,我尝试了这个代码:
function upsertPostTravelListItemTravelerInfo1() {
var clientContext = new SP.ClientContext(siteUrl);
. . .
...但收到的是这条错误信息:
Uncaught Sys.ArgumentException: Sys.ArgumentException: Value does not fall within the expected range.
Parameter name: serverRelativeUrl
接下来是一大堆 "gobbledygook"(只有纯 D 极客才会喜欢的转储),包括以下两个看起来可能有某种联系的部分:
如果(!SP.ScriptUtility.isUndefined(window._spPageContextInfo)&&!SP.ScriptUtility.isUndefined(window._spFormDigestRefreshInterval)&&!SP.ScriptUtility.isUndefined(window.UpdateFormDigest)){var c=window._spPageContextInfo,d=c.webServerRelativeUrl,e=window._spFormDigestRefreshInterval;
...和:
if(!a)throw Error.argumentNull("serverRelativeUrl");if(!a.startsWith("/"))throw Error.argument("serverRelativeUrl");
任何人都可以从中得出结论吗?
在这行代码中...
ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");
CustomAction
参数需要是您要在加载 SP 库后执行的 JavaScript 函数的名称(使我们能够访问 SharePoint 客户端对象中所有那些令人愉快的对象模型)。
您也可以放弃将命名函数传递给 ExecuteOrDelayUntilScriptLoaded
,而只需将内联函数表达式插入第一个参数,如下所示:
ExecuteOrDelayUntilScriptLoaded(function(){
// do something amazing with the client object model here
}, "sp.js");
因此您的最终代码可能类似于:
function upsertPostTravelListItemTravelerInfo1() {
ExecuteOrDelayUntilScriptLoaded(function(){
var clientContext = SP.ClientContext.get_current();
. . .
},"SP.JS");
}
有了这个Javascript:
function upsertPostTravelListItemTravelerInfo1() {
var clientContext = SP.ClientContext.get_current();
. . .
...我 有时 得到这个错误(并非总是如此,如该方法插入列表的数据所示几次(但其他时间不是) );浏览器控制台(Chrome 开发工具)中显示的错误消息是:
Uncaught TypeError: Cannot read property 'get_current' of undefined
基于 this,我在我的 *.ascx 文件中 Javascript 的顶部尝试了这个:
ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");
...但这引起了一个毛团,上面刻有以下明显偏执的表现:“CustomAction 未定义”
搞什么啊,拉姆齐!正如那句老话所说,我不能因输而赢。如何让 get_current() 始终如一地正确执行?
所以,我尝试了这个代码:
function upsertPostTravelListItemTravelerInfo1() {
var clientContext = new SP.ClientContext(siteUrl);
. . .
...但收到的是这条错误信息:
Uncaught Sys.ArgumentException: Sys.ArgumentException: Value does not fall within the expected range.
Parameter name: serverRelativeUrl
接下来是一大堆 "gobbledygook"(只有纯 D 极客才会喜欢的转储),包括以下两个看起来可能有某种联系的部分: 如果(!SP.ScriptUtility.isUndefined(window._spPageContextInfo)&&!SP.ScriptUtility.isUndefined(window._spFormDigestRefreshInterval)&&!SP.ScriptUtility.isUndefined(window.UpdateFormDigest)){var c=window._spPageContextInfo,d=c.webServerRelativeUrl,e=window._spFormDigestRefreshInterval;
...和:
if(!a)throw Error.argumentNull("serverRelativeUrl");if(!a.startsWith("/"))throw Error.argument("serverRelativeUrl");
任何人都可以从中得出结论吗?
在这行代码中...
ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");
CustomAction
参数需要是您要在加载 SP 库后执行的 JavaScript 函数的名称(使我们能够访问 SharePoint 客户端对象中所有那些令人愉快的对象模型)。
您也可以放弃将命名函数传递给 ExecuteOrDelayUntilScriptLoaded
,而只需将内联函数表达式插入第一个参数,如下所示:
ExecuteOrDelayUntilScriptLoaded(function(){
// do something amazing with the client object model here
}, "sp.js");
因此您的最终代码可能类似于:
function upsertPostTravelListItemTravelerInfo1() {
ExecuteOrDelayUntilScriptLoaded(function(){
var clientContext = SP.ClientContext.get_current();
. . .
},"SP.JS");
}