2011-10-18 29 views
7

cuál es el significado de la almohadilla (#) aquí, ¿cómo se relaciona con el archivo .js:¿Qué significa el hash (#) después de un archivo .js?

<script src="foo.js#bar=1"></script> 
+3

¿Dónde viste esto? Normalmente, una cadena de consulta (por ejemplo, 'foo.js? 123) se utiliza como un" interruptor de caché ". Un hash probablemente no debería afectar el almacenamiento en caché. –

+0

contexto @Ates Goral: de Facebook como botón de escritura de la incrustación //connect.facebook.net/en_US/all.js#xfbml=1 – jsj

+0

Para mí parece que Facebook están enviando algunos parámetros. Tal vez en all.js están obteniendo este parámetro y usándolo. – Krasimir

Respuesta

4

El hash después de la secuencia de comandos se utiliza por el script incrustado para la configuración. Por ejemplo, tener una mirada en el ejemplo proporcionado (facebook):

1. window.setTimeout(function() { 
2. var a = /(connect.facebook.net|facebook.com\/assets.php).*?#(.*)/; 
3. FB.Array.forEach(document.getElementsByTagName('script'), function (d) { 
4.  if (d.src) { 
5.   var b = a.exec(d.src); //RegExp.exec on the SRC attribute 
6.   if (b) { 
7.    var c = FB.QS.decode(b[2]); //Gets the information at the hash 
8.    ... 

En el guión, cada <script> etiqueta línea 3 se comprueba para ocurrencias línea 5 del hash línea 2 en el atributo . A continuación, si existe el hash línea 6, la hashdata se extrae línea 7, y la función continúa.

2

Se utiliza probablemente dentro de la que se hace referencia .js al leer el archivo de la URL en bruto y extraer el parámetro (utilizando algo window.location, por ejemplo y analizar lo que está después del #).

3

No hago nada en términos de carga del script. Lo que supongo es que el script en sí busca su propia etiqueta de secuencia de comandos y selecciona la pieza después del hash (barra = 1) y la usa para configurar su comportamiento de alguna manera. Para hacer esto, es probable que tengan que recorrer todas las etiquetas de script y hacer coincidir el atributo src.

0

La parte que sigue el hash de una dirección URL que se conoce como un fragment identifier. Si está presente, especifica una parte o una posición dentro del recurso o documento global. Cuando se utiliza con HTTP, generalmente especifica una sección o ubicación dentro de la página, y el navegador puede desplazarse para mostrar esa parte de la página.

En relación con el archivo JavaScript, el autor del programa es con toda probabilidad usarlo como un método para pasar argumentos al archivo. Sin embargo, este método no debe ser utilizado. Las URL pueden contener query strings que sirven para el mismo propósito.

Sin embargo, nunca es una buena idea para incrustar argumentos a la URL de un archivo JavaScript porque para cada conjunto diferente de parámetros de la URL se almacena en caché una vez más que es una pérdida de memoria. En cambio, es mejor establecer la cadena de consulta en la URL de la página HTML que contiene el script en sí. Esto se debe a que JavaScript tiene una propiedad incorporada para acceder a la cadena de consulta de la página web: location.search. Puede leer más al respecto here.

Cuestiones relacionadas