2012-08-25 22 views
5

Tengo un sitio alojado por GitHub que usa Jekyll, y he estado (con éxito) usando un script definido internamente en cada diseño que generará un eslogan aleatorio de una matriz de ellos.Problemas para vincular JavaScript externo con Jekyll

Estoy tratando de mover esta secuencia de comandos a un tagline.js externo, pero hasta ahora no he tenido éxito.

Aquí está el guión básico de generación de coletilla, en caso de que haya algo en el código causando esto (lo cual dudo, honestamente, debido a su simplicidad, pero siempre es una posibilidad):

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

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

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

Como dije, funciona bien cuando es interno, pero no cuando intento vincularlo a un dispositivo externo. Estoy bastante seguro de que es solo un caso de donde estoy apuntando el <script> a: el archivo HTML que contiene el <script> está en _layouts/default.html, pero el script está en scripts/tagline.js.

EDITAR: Disculpa, estaba usando "<link>" cuando en realidad quise decir "<script>". ¡Así que eso elimina la solución "estás usando la etiqueta incorrecta"! : P

Edit2: La plena <script> (de nuevo, que se encuentra en un archivo HTML en _layouts/default.html) es la siguiente: <script type="text/javascript" href="../scripts/tagline.js"></script>

Respuesta

4

El atributo que desea utilizar para una llamada de guión es src en lugar de href. Por ejemplo:

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

También, lo recomiendo encarecidamente el uso de rutas de la raíz del sitio (también conocido como docroot) en lugar de en relación con el archivo. De esta forma puede usar la misma llamada en varios lugares y siempre llegará a la ubicación correcta. Para usar una URL relativa de docroot, inicie la ruta con /.

Suponiendo que estés script se encuentra en http://example.com/scripts/tagline.js, la llamada que haría es:

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

Sin utilizar el docroot, se le constantemente tienen que ajustar la ruta en función de donde el archivo HTML llamar al script está ubicado en el árbol. Si todos los archivos están en el mismo lugar, no es gran cosa, pero es un buen hábito para evitar problemas en el futuro.

+0

Derp, gracias! Sabía que era algo que estaba haciendo mal en el html. – ChaoticWeg

+0

Todo el mundo ha hecho lo mismo o algo similar un trillón de veces. A veces solo toma otro par de ojos. Me alegra que lo hayas hecho. –

Cuestiones relacionadas