SharePoint Master页面中的锚标记
题
嗨,有人可以帮助我在Sherepoint自定义发布母版页中提起锚标记。实际上我要打开一个站点页面点击这个锚点标记,这个网站页面将位于“页面”库下的顶级网站集中。我试图放置一个锚点,然后在单击事件中使用“OpenNewFormURLS1()”函数被调用,该函数在同一主页上的脚本块中定义为:
<script type="text/javascript>"
SP.SOD.executeOrDelayUntilScriptLoaded(OpenNewFormUrls1, 'SP.js');
function OpenNewFormUrls1() {
var context= SP.ClientContext.get_current();
var site=context.get_site();
context.executeQueryAsync(Function.createDelegate(this,this.onSuccess), Function.createDelegate(this, this.onFailure));
context.load(site);
var serverRelativeURL=site.get_serverRelativeUrl();
ULS18u: ;
var options = { width: 500, height: 500 };
SP.UI.ModalDialog.commonModalDialogOpen(serverRelativeURL + "/Pages/openNew.aspx", options, null, null);
}
function onSuccess(sender, args) {
}
function onFailure(sender, args) {
}
</script>
.
在这些更改之后,JavaScript错误开始出现,然后首先单击锚点标记未打开型号对话框,而第二个和之后单击锚标标记与页面打开模型对话框,会为每个新站点打开模型对话框访问网站集。我得到的错误消息如下:
Message: The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
URI: http://sp2010/_layouts/sp.runtime.debug.js?rev=f2An00kVlALdMLzcBc1cug%3D%3D
.
任何人都可以帮助我如何实现这一目标?我遗漏了什么?请帮助。
解决方案
您正在尝试实现的内容,您无需使用客户端对象模型。从上面的代码中,您使用客户端对象模型仅获取根网站URL。但这已在JavaScript变量的形式中存在于SharePoint页面中。请参阅: http://blog.tedpattison.net/lists/posts/post.aspx?ID= 9
此外,我注意到您使用的是executeOrDelayUntilScriptLoaded
函数。此函数将在每个页面加载时执行您的OpenNewFormUrls1
函数。不仅当您单击锚点标记时。为您当前的要求,我不认为您不需要使用此功能,因为您无法使用JS Client对象模型。
所以考虑所有的东西,你的脚本块应该是这样的:
<script type="text/javascript>"
function OpenNewFormUrls1() {
var options = {
url: _spPageContextInfo.siteServerRelativeUrl + "/Pages/openNew.aspx",
width: 500,
height: 500,
title: "My Page",
};
SP.UI.ModalDialog.showModalDialog(options);
}
</script>
.
然后在锚标记的onclick上调用OpenNewFormUrls1
函数。
希望这有帮助。