2012-08-25 9 views
5

Ich habe eine Website von GitHub gehostet, die Jekyll verwendet, und ich habe (erfolgreich) ein intern definiertes Skript in jedem Layout verwendet, das eine zufällige Slogan aus einem Array von ihnen generieren wird.Problem beim Verknüpfen von externem JavaScript mit Jekyll

Ich versuche, dieses Skript auf eine externe tagline.js zu verschieben, aber bisher war ich nicht erfolgreich.

Hier ist die grundlegende Tagline erstellenden Skript, falls es etwas im Code verursacht dies (was ich bezweifle, ehrlich gesagt, wegen seiner Einfachheit, aber es ist immer eine Möglichkeit):

 
var tags = [ 'tag1', 'tag2', 'tag3' ];

function getTag() { 
    return tags[Math.floor(Math.random() * tags.length)]; 
} 

$(document).ready(function() { 
    $("#tagline").text(getTag()); 
}); 

Wie ich schon sagte, es funktioniert gut, wenn es intern ist, aber es nicht, wenn ich versuche, nach extern zu verlinken. Ich bin mir ziemlich sicher, dass es nur ein Fall ist, wo ich die <script> an: die HTML-Datei, die die <script> enthält, ist in _layouts/default.html, aber das Skript ist in scripts/tagline.js.

EDIT: Sorry, ich habe "<link>" verwendet, wenn ich eigentlich "<script>" meinte. Damit entfällt die Lösung "Sie benutzen das falsche Tag"! : P

EDIT2: Der vollständige <script> (wieder in _layouts/default.html in einer HTML-Datei befindet), ist dies: <script type="text/javascript" href="../scripts/tagline.js"></script>

Antwort

4

Das Attribut, das Sie für einen Skriptaufruf verwenden möchten ist src statt href. Zum Beispiel:

<script type="text/javascript" src="../scripts/tagline.js"></script> 

Auch würde ich empfehlen die Verwendung von Pfaden von der Website root (aka docroot) statt in Bezug auf die Datei hoch. Auf diese Weise können Sie den gleichen Anruf an mehreren Orten verwenden und es wird immer den richtigen Ort treffen. Um eine relative Docroot-URL zu verwenden, starten Sie den Pfad mit einer /.

Angenommen, Sie sind Skript befindet sich an http://example.com/scripts/tagline.js, der Anruf Sie machen würde, ist:

<script type="text/javascript" src="/scripts/tagline.js"></script> 

Ohne die docroot zu verwenden, werden Sie immer wieder den Weg zum neu einstellen müssen, je nachdem, wo die HTML-Datei: Das Skript befindet sich im Baum. Wenn alle Dateien an der gleichen Stelle sind, ist das keine große Sache, aber es ist eine gute Angewohnheit, Probleme zu vermeiden.

+0

Derp, danke! Ich wusste, dass ich etwas falsch gemacht habe. – ChaoticWeg

+0

Jeder hat die gleiche oder eine ähnliche Sache eine Zillion mal gemacht. Manchmal braucht es nur ein weiteres Augenpaar. Ich bin froh, dass du es geschafft hast. –

Verwandte Themen