Frage

Ich habe zwei Sharepoint-Funktionen, die jeweils implementiert identisch (siehe unten), die Kontrollen an eine Stellvertretung Kontrolle im Header meiner Seiten hinzufügen. Einer der Kontrollen hängt von der anderen (eine davon ist die jQuery-Bibliothek und das andere hängt von jQuery), jedoch, wenn die Kontrollen gemacht werden, die Reihenfolge der Kontrollen ist falsch. Wie gebe ich den Befehl, dass diese Kontrollen in gerendert werden?

Die Steuerung (beide sind identisch, mit der Ausnahme, dass sie eine andere Js-Datei verweisen):

<%@ Control ClassName="MyScriptControl" %>
<script type="text/javascript" src="/_layouts/MyScript.js"></script>

feature.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<Feature Id="AA9D59AC-D53E-4338-9B52-CD39F2A8C31A" 
    ActivateOnDefault="true" 
    Title="My Feature" 
    Description="Does something." 
    Scope="Site" Version="1.0.0.0" 
    Hidden="FALSE" 
    DefaultResourceFile="core" 
    xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="MyFeature\Elements.xml" /> 
    </ElementManifests>
</Feature>

Elements.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/" 
    Id="24A4BB9A-9636-4a73-B3A5-35661DE19902">
    <Control Id="AdditionalPageHead" 
        ControlSrc="~/_controltemplates/MyControl.ascx" /> 
</Elements>

Die Ausgabe auf der Seite (jQuery vor DependsOnjQuery bereitgestellt wird):

<script type="text/javascript" src="/_layouts/DependsOnjQuery.js"></script>
<script type="text/javascript" src="/_layouts/jQuery.min.js"></script>

Ich möchte MyControl1.js vor MyControl2.js machen.

War es hilfreich?

Lösung

Ich war in der Lage, dies zu erhalten, indem zu arbeiten, um eine zweite DelegateControl an den Header meiner Masterpage hinzufügen, und das Hinzufügen von jQuery zu diesem Delegate. Auf diese Weise kann ich sicherstellen, dass jQuery wird immer vor allem lädt andere, ohne eine gewisse Logik zu schreiben, die die Belastung meiner abhängigen Bibliotheken zu verzögern.

<SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/>
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>

Andere Tipps

Es scheint mir, wie die Sequenz Attribut verwendet werden kann, um die Reihenfolge zu steuern, in der diese Typen wiedergegeben werden. Geben Sie Ihre jQuery steuern, um eine Folge von 50 und Ihre DependsOnjQuery steuern, um eine Sequenz von 100 und Sie sollten gut sein.

Sehen Sie die Kontrolle delegieren Dokumentation auf MSDN für weitere Informationen.

haben Sie versucht, und die VERSCHIEBEN = „-VERZÖGERUNG“ Attribut für das Skript festgelegt.

, die die User-Agenten sagen würde, dass das Skript für die Seite warten soll, laden und machen, bevor es das Skript geladen wird.

Else Sie es, indem Sie eine Variable an dem einen Skript hacken könnte, ist, dass auf true gesetzt, wenn Skript geladen wird. In dem anderen platziert Sie Logik, die (man denke Schleife und Timeout-Methode) getestet, ob das Skript geladen wurde und ruft dann die Logik, wenn beide Scripts geladen werden.

nicht sehr schön, aber man braucht eine Art von Logik Ausführung zu handhaben, und nicht nur die Methoden inline in Ihrem Skript ausgeführt werden.

Um nathan: Sequenzen in Delegierten zu bestimmen werden verwendet, um , welche der Delegierten Kontrollen zu laden. Dies sollte nichts mit dem betreffenden Thema zu tun. Wie ich es die JS-Dateien nur den Wert auf ein Skript zu verstehen, was geschieht, nur einen Delegierten Kontrolle sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top