Frage

Hallo, kann mir jemand beim Erstellen eines Anker-Tags auf der benutzerdefinierten SherePoint-Veröffentlichungs-Masterseite helfen.Eigentlich möchte ich eine Websiteseite öffnen, wenn ich auf dieses Anker-Tag klicke. Diese Websiteseite befindet sich in der Websitesammlung der obersten Ebene unter der Galerie "Seiten".Ich habe versucht, einen Anker zu setzen, und beim Klickereignis wurde die aufzurufende Funktion "OpenNewFormUrls1 ()" verwendet, die im Skriptblock auf derselben Masterseite wie definiert ist :

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

Nach diesen Änderungen werden die Javascript-Fehler angezeigt, und beim ersten Klick in das Ankertag wird kein Modelldialog geöffnet, während beim 2. und anschließenden Klick auf das Ankertag der Modelldialog mit der Seite geöffnet wird. Dies geschieht bei jedem neuen Site-Besuch innerhalb der Websitesammlung.Die Fehlermeldung, die ich erhalte, lautet wie folgt :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 Kann mir jemand helfen, wie ich das erreichen kann?und was fehlt mir hier?Bitte helfen Sie.

War es hilfreich?

Lösung

Für das, was Sie erreichen möchten, müssen Sie das Clientobjektmodell nicht verwenden.In Ihrem obigen Code verwenden Sie das Clientobjektmodell nur zum Abrufen der URL der Stammsite.Dies ist jedoch bereits auf der SharePoint-Seite in Form einer Javascript-Variablen vorhanden.Sehen: http://blog.tedpattison.net/Lists/Posts/Post.aspx?ID=9

Außerdem ist mir aufgefallen, dass Sie das verwenden executeOrDelayUntilScriptLoaded Funktion.Diese Funktion führt Ihre aus OpenNewFormUrls1 funktion bei jedem Laden der Seite.Nicht nur, wenn Sie auf das Anker-Tag klicken.Für Ihre aktuelle Anforderung glaube ich nicht, dass Sie diese Funktion benötigen, da Sie das JS-Client-Objektmodell nicht wirklich verwenden müssen.

In Anbetracht all der Dinge sollte Ihr Skriptblock also so aussehen:

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

und dann rufen Sie die OpenNewFormUrls1 funktion beim Anklicken Ihres Anker-Tags.

Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top