2014-01-21 5 views
1

Возможно ли (и хорошая идея) передавать динамические данные в файл include JavaScript через хэш-код?Javascript включает в себя технику с динамическим SRC = «url»

Такие, как:

<head> <script src="scripts.js#x=123&y=456"></script> </head> 

Ищу альтернативу INLINE JS в динамически построенных страницах:

<head> 
    <script src="scripts.js#x=123&y=456"></script> 
    <script> 
     $(document).ready(function() { 
      pageInit(123, 456) 
     }); 
    </script> 
</head> 

Это хорошая идея, чтобы избежать встроенного JS? Как вы можете передавать динамические данные без ajax, что создает ненужный запрос на кругооборот?

Примечание: URL-адрес хеш-банга является особенным, поскольку браузеры игнорируют хэш-часть URL-адреса при проверке кеша. По крайней мере, для html-файлов.

Таким образом, все они будут повторно использовать файл index.html он находится в кэше:

index.html 
index.html#x=123 
index.html#x=345345 
index.html#x=2342&y=35435 

Этот же принцип должен сохраняться для файлов JavaScript. Я надеюсь, что это будет повторное использование кеш-версии script.js со страницы на страницу.

Переход к index.php, включают в себя следующее:

<head> <script src="scripts.js#x=123&y=456"></script> </head> 

Затем собирается fun.php включить этот

<head> <script src="scripts.js#x=898756465&y=5678665468456"></script> </head> 

Затем собирается see.php включить этот

<head> <script src="scripts.js#session=887987979&csrf_token=87965468796"></script> </head> 

От просмотра страницы до просмотра страницы передайте любую информацию, необходимую для страницы, через хеширование, в то же время повторно используйте scirpt.js из кеша.

Итак, можно ли прочитать информацию о хеш-банге из scirpts.js?

+0

точно не вопрос для StackOverflow , кстати, передавая данные по URL-адресу, вы получаете возможность кэшировать скрипт с этими конкретными значениями, вместо этого вы не можете кэшировать встроенный javascript-код. –

+0

stackoverlflow кажется единственным и лучшим местом, чтобы задать этот вопрос. Что касается кеша, хеш (#) в url вставляет браузер, который подходит для использования кешированной версии страницы. –

+0

@BrianMcGinity - Идентификатор фрагмента не имеет ничего общего с кешированием. – Quentin

ответ

0

Если HTML-файл, который вы создаете, является динамическим, просто создайте встроенный JavaScript. Написание include просто создаст дополнительный запрос из браузера, который вы можете избежать в первую очередь.

Edit: просто включить файл JavaScript, который считывает URL, вам не нужно проходить какие-либо переменные (но, конечно, вы также могли бы):

$(document).ready(function() { 
    // pseudo code 
    hashbang = location.href.substr(location.href.indexOf('#') + 1); 
    if (hashbang.x && hashbang.y) { 
     pageInit(hashbang.x, hashbang.y); 
    } else if (hashbang.csrf_token) { 
     // do something else 
    } 
}); 
+1

Для запроса первой страницы создается обратная связь. Второй запрос используется версия кеша. –

+0

Итак, если URL-адрес изменяется (разные x и y), вы хотите, чтобы браузер использовал один и тот же HTML-код, но отличался JavaScript? – Sonata

+0

Я добавил дополнительные разъяснения в вопрос ... см. Обновление. Я хочу, чтобы разные html-страницы использовали один и тот же файл javascript из кеша, в то время как в то же время передавали разные хэш-данные. –

Смежные вопросы