Я использую http://instantclick.io на своем веб-сайте (pjax
jQuery pjax
), и у меня возникают некоторые проблемы с javascripts. Это очень темпераментно - иногда страница загружается со всеми сценариями, работающими нормально, но в других случаях части скриптов не будут работать. Кроме того, скрипты запускаются более одного раза. Например, если я установил консольный журнал в функции .click()
, я увижу журнал консоли несколько раз, когда должен быть только один.
В документации по instantclick.io объясняется, как загрузить скрипт при каждой загрузке страницы:
Если у вас есть фрагмент JavaScript, который необходимо выполнить при каждой смене страницы, используйте следующее:
InstantClick.on('change', yourCallback);
Но мне нужно запустить целый файл js, а не только функцию. Я попытался обернуть InstantClick.on('change', function(){
вокруг моего всего js файла, но скрипты все еще не запускаются после открытия новой страницы.
В моей консоли я вижу много ошибок, связанных с неопределенностью функций, что указывает на то, что файлы не загружаются каждый раз.
Как я могу это решить? Благодарю!
Напишите в обратном вызове код, подобный этому, для динамического добавления js файла в DOM
var jsFile=document.createElement('script');
jsFile.setAttribute("type","text/javascript");
jsFile.setAttribute("src", link);
document.getElementsByTagName("head")[0].appendChild(jsFile);
И измените ссылку на URL-адрес в файл js.
используйте его так
long dateTimeSec = new Date().getTime();
<link rel="stylesheet" href="bootstrap/css/bootstrap.css?v=<%=dateTimeSec%>">