- Перезапуск функции
- Решение
- Решение
- Решение
- Как заставить скрипт перезагрузиться и выполнить заново?
- 6 ответов
- Как перезагрузить JS файл при смене URL?
- Динамическая перезагрузка скрипта
- LiveReload — обновление javascript без полной перезагрузки страницы (на примере mithril)
- Вступление
- Постановка
- Извлечение view-функций
- Плагин к LiveReload
- Встраивание в процесс сборки
- Неявная подгрузка нового скрипта
Перезапуск функции
(на всякий случай: есть отдельно html, css и js и папка с картинками)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Перезапуск браузера
Коллеги, есть специализированный сайт (система мониторинга), предназначенный для отображения.
Перезапуск XMLHTTPRequest запроса
Есть кусочек скрипта, который делает XMLHTTPRequest запрос. Время от времени, сервер.
Перезапуск функций
как перезапустить внешние функции для добавленного объекта? 14
Решение
Решение
кстати, простой запуск workCode () не работает в моем случае.
пишет undefined на некоторых переменнах. Скорее вссего это потому что в процессе первого вызова функции некоторые вещи из html кода удаляются, а при повторном вызове они уже не существуют.
Добавлено через 2 минуты
и не знал что простой вызов кода это и есть функция обертка, я думал это вот это: [URL=»https://learn.javascript.ru/call-apply-decorators»]
Решение
странно, но использование метода confirm () без объекта window вас почему-то совсем не смущает (или, по-вашему есть принципиальная разница, о которой мне неизвестно?)
Добавлено через 13 минут
а статья https://learn.javascript.ru/call-apply-decorators вовсе не о том, вы перепутали квадратное с холодным
в смысле есть такое негласное правило или это для моего случая конкретно?)
теперь понял в чем разница. я не предвидел с самого начала, что надо будет перезапускать игру и каким образом это делается. То есть в следующий раз надо будет заранее планировать так что все возращалось на свои места.
Добавлено через 2 минуты
хотя конечно это можно все сделать все еще в рестарте. Но оставим это на мой второю следующую работу, потому что этот код в первой работе написан таким образом, что ковыряться в нем больше не хочется- слишком беспорядочно)
почти равнозначен onload, но при этом выглядит ещё более непонятно, или нет?
Источник
Как заставить скрипт перезагрузиться и выполнить заново?
У меня есть страница, которая загружает скрипт от третьей стороны (лента новостей). URL src для скрипта назначается динамически при загрузке (для стороннего кода).
Единственная проблема в том, что он загружается только один раз. Я бы хотел, чтобы он перезагружался (и, таким образом, отображал новый контент) каждые n секунд.
Итак, я решил попробовать это:
Я получаю предупреждение, div очищает, но динамически генерируемый HTML не загружается в него.
Есть идеи, что я делаю не так?
6 ответов
Как насчет добавления нового тега script в со скриптом для (повторной) загрузки? Что-то вроде ниже:
Используйте эту функцию, чтобы найти все элементы скрипта, содержащие какое-то слово, и обновить их.
Я знаю, что уже поздно, но я хочу поделиться своим ответом. То, что я сделал, это сохранил теги de script в HTML-файле, заблокировав скрипты в моем Index-файле в div с идентификатором, что-то вроде этого.
И когда я хотел освежиться, я просто использовал.
Вы пытались удалить его из DOM, а затем вставить его снова?
Я только что сделал, это не работает. Однако создание нового тега сценария и копирование содержимого существующего тега сценария с последующим добавлением его работает хорошо.
Это не сработает, если вы ожидаете, что сценарий будет меняться каждый раз, что, как я полагаю, в вашем случае. Вы должны следовать предложению Келли, просто удалите старый тег сценария (просто чтобы DOM был тонким, это не повлияет на результат) и заново вставьте новый тег сценария с тем же src плюс кешбастер.
Вот метод, который похож на метод Келли, но удалит все существующие сценарии с тем же источником и использует jQuery.
Источник
Как перезагрузить JS файл при смене URL?
нууу, в принципе конечно ничего странного если вам это прямо необходимо делать. Я ведь не знаю специфики. Но в большинстве случаев вполне достаточно выполнять функцию.
У меня на вк висит юзерскрипт, который объявляет функцию, выполняющуюся по клику. Вы хотите загружать скрипт потому что в новом скрипте у вас какая-то другая логика?
Если вы хотите добиться того, чтобы при переходе на главную у вас чего-то там активировалось, мне кажется вам проще будет опираться на возможности расширения. Например в хроме расширение может отслеживать изменение URL так.
Если по каким-то причинам вам хочется реализовывать подобное только с использованием стандартного объекта window, то самым лучшим было бы изучить принцип работы VK JS, найти там либо роутер, либо ивенты, и их использовать (если это вообще возможно). Также можно отслеживать изменения (polling), но это конечно создаст некоторые задержки.
И в любом случае мне кажется не стоит загружать скрипт много раз, если конечно это один и тот же скрипт. Достаточно нужную логику вынести в функцию и её выполнять когда надо.
Источник
Динамическая перезагрузка скрипта
Помощь в написании контрольных, курсовых и дипломных работ здесь.
перезагрузка текущего скрипта
как из js сгенерированном в php вызвать тот же php только GETом с параметром? желательно без Ajax.
Динамическая загрузка скрипта
Возможно сделать загрузку JS-скрипта из другого JS-скрипта, но таким образом, чтобы при повторной.
Динамическая перезагрузка блока
Всем добра! Помогите пожалуйста прийти к решению следующей проблемы: Хочу при регистрации.
Управляемая перезагрузка скрипта
Гуру, подскажите инструменты. Опыта работы в ноде мало(чтобы сразу выбрать инструмент). Нужно.
Все правильно пишет. Нету такой, пока скрипт не загрузится. Подождать нужно, например так:
В первом скрипте вводишь переменную check=0;
Во втором check=1;
Я тут тоже как-то раз поднимал похожий вопрос.
Посмотри вот этот пример:
Динамическая загрузка скрипта при необходимости.
Если пользователь не нажимает на кнопку, скрипт не грузится.
Скрипт грузится с моего сайта, чтобы была реальная задержка.
Потестируй, может это тебе поможет в поисках.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как можно связать работу скрипта из балуна с работой скрипта на странице?
Первый раз задаю вопрос, извините если не в тот раздел. В общем, делаю метку через Яндекс карты.
Как из одного скрипта изменить переменную (int) другого скрипта?
У меня есть два скрипта (money который отвечает за общее количество денег и CarBuy который отвечает.
Запрос к БД не выполняется из php-скрипта в зависимости от длительности работы скрипта
Не так давно переехал к другому провайдеру со своим VDS-ом. Все настройки идентичны предыдущему.
Источник
LiveReload — обновление javascript без полной перезагрузки страницы (на примере mithril)
Вступление
Не так давно я начал пользоваться такой полезной штукой как livereload (для тех, кто не знает, что это — есть статья на хабре). Livereload отслеживает изменения в коде веб-приложения и перегружает страницу в браузере при необходимости. При этом со стилями Livereload поступает умнее и заменяет их на лету без перезагрузки, что выглядит волшебно.
К сожалению с javascript такой номер не прокатывает — Livereload не знает как гуманно заменить только изменившиеся скрипты и перегружает всю страницу. Это особенно печалит если использовать инструмент вроде mithril, в котором представление (читай — html) задается так же в javascript. Если я меняю модель или контроллер, то тут все понятно, но если я меняю класс у дива в представлении (скажем, подбирая правильное сочетание bootstrap классов), то перезагрузка страницы кажется излишней — ну вот же, я поменял одну функцию, просто перерисуй view с ее помощью!
В целом не страшно, конечно (работали же как-то без этого раньше), но почему бы не сделать работу еще немного удобнее?
Для тех, кто торопится
Постановка
У нас есть чистые функции, отображающие модель на представление (читай — html). Нам нужно сделать так, что если меняется такая функция, то мы должны в браузере подгрузить новую версию, подменить исходную и, в случае с Mithril, вызвать m.redraw().
Самый простой способ подмены — запихать все такие функции в глобальный объект, а в местах их прежнего обитания расставить обращения к этому объекту. Что-то типа такого:
Теперь мы можем перезагружать один только file1.js и дергать m.redraw(), после чего представление будет перерисовано. При этом текущее состояние системы (в нашем случае хранящееся в контроллере Page) сохранится.
Однако вручную делать такое разделение не хочется — во-первых нарушается целостность компонента (довольно удобно при разработке менять только один файл, настраивая и поведение и внешний вид компонента), во-вторых есть уже написанный код, в-третьих пришлось бы больше объяснять новым разработчикам. Значит нужно парсить исходный код и извлекать нужные нам функции.
Извлечение view-функций
Для решения проблемы 1 парсинга кода регекспами будет явно недостаточно, нужен синтаксический разбор. К счастью, есть библиотека esprima, которая разбирает переданный ей js-код и выдает синтаксическое дерево (можете поиграться здесь) как обычный json. Обход такого дерева не должен составить труда, надо только разобраться со всеми возможными типами узлов дерева, чтобы не пропустить какие-то случаи. Например запись
совсем не то же самое что
(соответственно результаты парсинга вот и вот)
Теперь несложно и функцию найти, и все ее зависимости. Тела функций вынимаем и складируем отдельно, в исходном коде помещаем вызов глобальной функции, и собираем код обратно с помощью библиотеки escodegen.
Для решения задач 2 и 3 пригодилось бы что-то вроде аттрибутов C# или аннотаций Java — какой-то способ пометить нужные функции. Т.к. в javascript такого способа не предусмотрено, пришлось придумать — пусть аттрибутом будет строка, являющаяся первым выражением в теле функции. И если значение аттрибуты «__stateless», то функцию надо извлекать, а если «__ignore» — то не надо.
Все описанное выше я собрал в виде отдельной библиотеки st8less, никак не заточенной под mithril. В теории ее можно использовать для других похожих задач.
Плагин к LiveReload
Теперь, когда мы умеем доставать нужные нам функции и сохранять их отдельным js-файлом, надо научить LiveReload обновлять его без перезагрузки всей страницы.
Плагин к LiveReload написать несложно, причем он подхватится независимо от того как вы используете Livereload — вставляете сниппет на страницу или используете расширение браузера. Плагины имеют приоритет над стандартным поведением, и если мы напишем вот так:
то при любом изменении вызовется наш метод reload, и если мы возвращаем true, то стандартная обработка не происходит. Так что можем отслеживать обновление только нашего файла с вынесенными функциями (зная имя этого файла, конечно) и перезагружать только его.
Для перезагрузки мы будем удалять существующий элемент script и добавлять в DOM новый, причем к URL скрипта каждый раз будет добавляться текущее время — чтобы предотвратить кэширование.
Встраивание в процесс сборки
Если проект собирается с помощью gulp (у меня как раз так) или другой системы сборки, то логично было бы встроить извлечение view-функций в процесс сборки. В случае с gulp нужно было написать плагин, который обработает все проходящие через него js-скрипты, повыдергивает из них view-функции и запишет отдельным файлом, а потом оповестит LiveReload об изменениях.
Я не буду описывать создание плагина для gulp, все делалось строго по туториалам и примерам других плагинов (типа gulp-coffee и gulp-concat), ничего необычного. В итоге gulpfile.js выглядит примерно так:
Обратите внимание на использование gulp-changed. Если мы меняем только main.coffee, то на выходе получаем обновленный main.js и st8less.js, причем если мы меняли view-функцию, то main.js по факту будет точно таким же. Но время изменения у main.js все равно поменяется, и в результате LiveReload перезагрузит всю страницу. Чтобы этого не случилось, необходимо сравнить фактическое содержимое, что и делает плагин gulp-changed.
Плагины для gulp и LiveReload лежат в отдельном репозитории — gulp-livereload-mithril. Он, в свою очередь, ссылается на библиотеку st8less описанную выше.
Неявная подгрузка нового скрипта
Наш плагин создает новый js-файл (st8less.js), и надо сослаться на него из html-страницы. Можно было попросить пользователя сделать это самостоятельно, но я подумал: все равно я меняю пользовательские js-файлы, почему бы не добавить в один из них простой document.write?
Так и было сделано, но этого оказалось недостаточно. Если, скажем, мы добавим document.write в начало main.js, а main.js где-то в середине уже использует вынесенные в функции, то мы получим ошибку, т.к. свежедобавленный элемент script еще не начал подгружать наш скрипт.
Надо как-то подгрузить указанный скрипт здесь и сейчас, и другого способа, кроме как послать синхронный ajax-запрос, я не нашел. Добавляемая в начало одного из скриптов конструкция выглядит так:
При желании можно этот ужас отключить, передав плагину
Задача оказалась вполне разрешимой, причем приведенное решение можно применить не только для mithril, но и для других подобных случаев — на ум приходят react и angular.js 1.x (зачастую html-верстка для директив помещается прямо в js-код директивы).
Источник