none
JSLink ScriptOnDemand - teilweise werden Scripts nicht geladen RRS feed

  • Allgemeine Diskussion

  • Hi,

    ich hab aktuell das Problem, das meine JSLink-Scripts manchmal nicht geladen werden, wenn ein Nutzer die Seite aufruft. Ich kann leider kein Standard-Verhalten feststellen, wann dies geschieht. Mit der Entwickler-Konsole offen klappt es immer (da ja dann die Scripte und Ausführungen "verlangsamt" werden).

    Mein Aufbau der Scripte ist so gewählt, das auf jeder SiteCollection nur das "Loader" Script hinterlegt werden muss mit individueller Config-Möglichkeit. Das Script lädt dann aus der zentralen Start-Seite das Hauptscript. Dies soll Anpassungen an einer zentralen Stelle ermöglichen, ohne dass die Scripte auf den Servern abgelegt werden müssen (da ich auch keinen Zugriff auf die Server habe / haben möchte).

    Hier ein Beispiel:

    (function(){
        var scriptKey = "TagCloudSource.js";
        var scriptLink = "/Scripts/Source/TagCloud/TagCloudSource.js";
    
        SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function(){
            SP.SOD.registerSod(scriptKey,scriptLink);
            SP.SOD.executeFunc(scriptKey, null, function(){
                console.log("ScriptOnDemand loaded: " + scriptKey);
            });
        });
    
        /* config part */
        SP.SOD.executeOrDelayUntilScriptLoaded(function () {
                MyNamespace.TagCloud.tagCloudTitle = "Top Tags für '{0}'";        // title for each tag cloud based on field name
                MyNamespace.TagCloud.tagDelim = ' | ';                // delimiter between the tags
                MyNamespace.TagCloud.tagAutoSize = true;                        // calculated size for each tag depending on occurrence
                MyNamespace.TagCloud.ListTemplateType = 850;                    // 850 --> Pages library
                MyNamespace.TagCloud.showTagCount = true;                        // Display total count for each tag
    
                MyNamespace.TagCloud.RegisterTemplate();
            }, scriptKey);
    })();


    Die eigentlichen Scripte haben dann immer als letzte Zeile folgendes im Bauch:

    // notify final script load
    SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs("TagCloudSource.js");


    Ich vermute es liegt an dem Aufruf

    SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function(){

    Hat jemand ähnliche Konstrukte?

    Kennt jemand einen funktionierenden Workaround?


    Danke euch!

    Freitag, 20. Oktober 2017 10:08