嗨,有人可以帮助我在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函数。

希望这有帮助。

许可以下: CC-BY-SA归因
scroll top