Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2011, 22:14
Новичок на форуме
Отправить личное сообщение для densmith Посмотреть профиль Найти все сообщения от densmith
 
Регистрация: 14.11.2011
Сообщений: 4

Скрипт на JS не работает без перезагрузки страницы
Имеем в теге <head> следующее:

<script type='text/javascript' src='http://_путь_к_скрипту_/script1.js'></script>


Имеем функцию (JS):

function changeScript() {
   var head = document.getElementsByTagName('head')[0];
   var script = document.createElement('script');
   script.setAttribute('type', 'text/javascript');
   script.setAttribute('src', 'http://_путь_к_скрипту_/script2.js');
   head.insertBefore(script, head.firstChild);
   head.appendChild(script);
}


имеем событие, вызывающее данную функцию (допустим, кнопка с onClick)
По великой идее при нажатии на кнопку должны выполняться всякие колдоства с аяксом (к делу не относится) и сменяться скрипт. Все происходит так как нужно, т.е. в <head> появляется именно требуемое:
<script type='text/javascript' src='http://_путь_к_скрипту_/script2.js'></script>

но исполняется первый вариант. Перезагрузка страницы - исключена. Как заставить работать второй скрипт?
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2011, 22:48
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

А попробуй-ка
script.outerHTML = script.outerHTML
иногда это используют для подталкивания изменений
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2011, 23:24
Новичок на форуме
Отправить личное сообщение для densmith Посмотреть профиль Найти все сообщения от densmith
 
Регистрация: 14.11.2011
Сообщений: 4

Вроде оживает. Но теперь там два скрипта сидят (первый никуда не исчез). А так как там переменные и функции с одинаковыми именами - начинается катавасия.

Может еще у тебя есть какой-нить вариант по удалению предыдущего скрипта из кода? Спасибо.

Последний раз редактировалось densmith, 15.11.2011 в 00:30.
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2011, 00:57
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от densmith
Может еще у тебя есть какой-нить вариант по удалению предыдущего скрипта из кода? Спасибо.
Нету такого варианта) Назови их по-разному.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #5 (permalink)  
Старый 15.11.2011, 13:08
Новичок на форуме
Отправить личное сообщение для densmith Посмотреть профиль Найти все сообщения от densmith
 
Регистрация: 14.11.2011
Сообщений: 4

Внесу дополнительную ясность:

<head>
...
    <script type="text/javascript" src="http://_path_to_/engine.js"></script>
    <script type="text/javascript" src="http://_path_to_/javascript.js"></script>
    <script type="text/javascript" src="http://_path_to_/calendar.js"></script>
    <script type="text/javascript" src="http://_path_to_/calendar-ru.js"></script>
</head>


Аяксом на onClick сменяется содержимое ДИВа на страничке. Файл calendar-ru.js содержит лангпак для календаря. На тот же самый onClick должен меняться и лангпак на calendar-en.js, или calendar-de.js

Все так и происходит. Но переменные остаются из самого первого файла плюс добавляются из второго, плюс из третьего, если уж начать по языкам кликать. Единственное на данный момент, но неприемлемое решение - это location.reload(); Суть - избавиться от переменных свойственных "предыдущему" языку.

Ну как-то так. Спасибо заранее.
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2011, 13:20
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сообщение от densmith
function changeScript() {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://_путь_к_скрипту_/script2.js');
head.insertBefore(script, head.firstChild);
head.appendChild(script);
}
ну и посмотри сам на механизм свой.
добавить ещё один файл js в дерево документа. ключевое слово добавить
Сообщение от densmith
Но переменные остаются из самого первого файла плюс добавляются из второго, плюс из третьего, если уж начать по языкам кликать.
но они то у тебя глобальные наверно?)
Сообщение от densmith
Суть - избавиться от переменных свойственных "предыдущему" языку.
при загрузке нового файла-в его теле создай функцию поиска "лишних" и их удаления.
http://javascript.ru/delete

Последний раз редактировалось dmitriymar, 15.11.2011 в 13:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срипт для меню без перезагрузки страницы Antonios Общие вопросы Javascript 4 23.03.2011 09:03
Не работает без обновления страницы levi4 jQuery 4 26.01.2011 15:12
Не работает без обновления страницы levi4 Events/DOM/Window 3 25.01.2011 15:44
Как сделать смену картинки, типа "до" и "после", без перезагрузки страницы? btstudio Events/DOM/Window 2 23.02.2009 20:43
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06