SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




JavaScript-Datei einbinden SP 2013 Foundation

Geprüfte Antwort Dieser Beitrag hat 14 Antworten

Ohne Rang
36 Beiträge
Adventurer erstellt 26 Mai 2015 12:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo liebe Community!

Eine Frage zu SP und JavaScript. Wir benutzen SP 2013 Foundation. Nun habe ich auf vielen Seiten ein paar kleine Dinge über JavaScript geregelt. Script-Editor genommen und den Code dort eingetragen. Funktioniert sehr gut. Allerdings sind mehr und mehr Änderungen am JS-Code notwendig. Nun müsste ich jede Seite einzeln laden und den Code im WebPart editieren. Das kann doch nicht im Sinne des Erfinders sein, richtig? Es muss doch eine Möglichkeit geben, wie ich eine .js-Datei erstellen und auf jeder Seite einbinden kann. So dass ich Änderungen nur einmal anzentraler Stelle (in der .js-Datei) vornehmen muss. Eine zentrale CSS-Datei kann ich ja schließlich auch in z.B. die Masterpage einbinden.

Für Lösungswege wäre ich sehr dankbar!

Viele Grüße

Mario

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Mai 2015 12:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das geht schon und es geht sogar auf einigen unterschiedlichen Ebenen. Man kann die Datei pro Website oder pro Websitesammlung z.B. in die Site Assets Bibliothek packen. Man kann sie in die Root-Website packen und von dort referenzieren. Und man kann sie ins Dateisystem der Server packen und von dort referenzieren. Dann gibt es noch die Frage, wie man sie einbindet. Das kann pro Site oder pro Site gehen. Oder eben auch Farm-weit. Was davon kommt für Dich infrage?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
Adventurer Als Antwort am 26 Mai 2015 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

das klingt erst einmal positiv dass es einen Weg gibt. Ich hoffe ich bekomm das auch hin.

Also, wo ich die Datei hinlege ist mir erstmal relativ egal. Meine jquery-Bibliothek liegt z.B. hier "~sitecollection/SiteAssets/Scripte/jquery1.js". Dort kann ich mir vorstellen lege ich auch die .js-Datei hin. Interessant ist aber wie ich die Datei referenziere. Einbinden möchte ich das ganze über eine komplette Webseitsammlung. Diese benutzt ein und dieselbe Masterpage.

 

Ohne Rang
43 Beiträge
Share15 Als Antwort am 26 Mai 2015 13:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi! Meine Referenzierung in der masterpage sieht so aus:

<SharePoint:ScriptLink language="javascript" name="~sitecollection/SiteAssets/ne_scripts.js" runat="server" Localizable="false" />

Hier ein Bildschirmausschnitt

Ohne Rang
36 Beiträge
Adventurer Als Antwort am 26 Mai 2015 13:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke auch an dich Share15! Wenn ich die Datei auf diese Weise einbinde, dann passiert leider auch nix. Auch ein einfaches alert wird nicht ausgeführt.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Mai 2015 13:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die verschiedenen Ablagemöglichkeiten haben mit dem Gültigkeitsbereich zu tun. Wenn ein Script nur für eine einzige Websitesammlung sein soll, dann gehört es auch dorthin. Bei Dingen wie jQuery kann man sich durchaus auch überlegen sie ins Dateisystem zu packen und damit nur eine einzige Datei für die gesamte Farm zu haben.

Und wenn Du js-Dateien über die Masterpage einbinden möchtest, kannst Du auch einen ganz simplen HTML Script-Tag verwenden
<script type="text/javascript" src="/WebUrl/SiteAssets/myfile.hs"></script>

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
Adventurer Als Antwort am 26 Mai 2015 13:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Okay, das mit den Gültigkeiten wird ich mir merken, das passt ja auch soweit.

Nun aber das Einbinden. Habe es so gemacht wie Share15 geschrieben. Und zur Sicherheit einfach mal eine .js mit dem Inhalt

alert('Hallo');

Nur um zu testen ob es geht. Nach meiner Logik hätte doch, wenn ich jetzt eine Seite lade die diese Masterpage benutzt, ein "Hallo" erscheinen müssen, richtig? Oder brauch ich noch einen Funktionsaufruf oder Ähnliches? Das wäre weniger schön.

Deinen Script-Tag würde ich auch ausprobieren Andi, nur wüsst ich nicht wohin in der Masterpage ich das schreiben sollte... 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Mai 2015 13:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also ich bin mit den SharePoint-ScriptLinks noch nie glücklich geworden und verwende sie deshalb nicht mehr. Den "normalen" Script-Tag kannst Du an dieselbe Stelle setzen. Oder auch eine andere - Du mußt selbst wissen, wo es am besten paßt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
Adventurer Als Antwort am 26 Mai 2015 14:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Okay, habe das mal so gemacht wie du gesagt hast, siehe Bild:

 

Das sollte doch so passen, richtig? Allerdings bekomm ich immer noch kein "Hallo" :-(

Ohne Rang
43 Beiträge
Share15 Als Antwort am 26 Mai 2015 14:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich kann mich irren, aber ~sitecollection funktioniert in "normalen" Script-Links nicht. Wenn du im SharePoint Designer den Link mit gedrückter Strg-Taste anklickst, siehst du, ob SharePoint das Skript findet oder nicht.

Auch wenn manche mich für diesen Rat sicher gerne schlagen würden, empfehle ich, zum Testen einfach mal den absoluten Pfad auszuprobieren.

Ohne Rang
36 Beiträge
Adventurer Als Antwort am 26 Mai 2015 14:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du irrst nicht! Er findet den Scriptlink tatsächlich nicht. Ich werde einen anderen (absoluten) Pfad morgen mal ausprobieren und mich melden. Vielen Dank ersteinmal an euch beide!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Mai 2015 15:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Adventurer"] habe das mal so gemacht wie du gesagt hast[/quote]

Hast Du nicht :-)

Wie bereits angemerkt, mußt Du einen festen Pfad verwenden. Da der Link ja eh in einer Masterpage fest eingebaut ist. ist das auch völlig egal und Du brauchst keine Dynamik.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
Adventurer Als Antwort am 27 Mai 2015 07:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So, ausprobiert....und......geht! :)

Es ist tatsächlich so, mit dem einfachen html-Tag UND einem absoluten (relativ geht wirklich nicht) Pfad geht es nun. Einen ganz großen Dank an meine beiden Helfer, ihr habt mich ein ganzes Stück weiter gebracht!

 

Viele Grüße

Mario

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Mai 2015 08:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Adventurer"]einem absoluten (relativ geht wirklich nicht) Pfad [/quote]

Selbstverständlich geht auch ein relativer Pfad. An der Stelle ist das nur ganz einfaches HTML und hat nichts mit SharePoint zu tun.

Für "relativ" gibt es grundsätzlich zwei Möglichkeiten:
- Relativ zur aktuellen Seite. Der Pfad beginnt dann mit einem Ordnernamen oder einem oder zwei Punkten. In dem Fall mußt Du von der aktuellen Seite ausgehen, was für SharePoint ungünstig ist, weil nicht alle Seiten im selben Ordner liegen.
- Serverrelativ. Der Pfad beginnt dann mit einem Schrägstrich und ist für alle Seiten gleich. Man beginnt einfach mit dem Teil nach dem Host (dem Servernamen oder der Domäne), also ungefähr so /website/bibliothek/script.js

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
Adventurer Als Antwort am 27 Mai 2015 08:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ist kopiert und abgeheftet :-)