Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/76: Рейтинг темы: голосов - 76, средняя оценка - 4.74
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2

Как удалить скрипт из памяти браузера, не перегружая страницу?

09.02.2017, 19:45. Показов 15838. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использование removeChild для удаления соответствующего тега работает, только для тех скриптов, которые приписаны на самой странице. Если же скрипт подгружался так:
HTML5
1
<script src="http://site.ru/1.js" charset="utf-8" type="text/javascript"></script>
то, даже если удалить вышеуказанную строчку (через removeChild ), в памяти браузера он все равно остается (потому, что способен выполняться при вызове).

Добавлено через 4 минуты
Только, пожалуйста, не надо (как на других форумах) советовать, как очистить кэш браузера. Ибо имеется в виду не кэш, а основная (оперативная) память, в которой находится скрипт. Очистка кэша не дает никакого результата.
Хотелось бы, по возможности, без использования java-апплетов.

Добавлено через 4 минуты
Если уж не удалить из оперативной памяти (да, я понимаю, это не С), то, хотя бы - как-то заблокировать возможность выполнения одного или нескольких скриптов на странице - при помощи соответствующего скрипта, который подгружается на страницу, например, с сервера.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2017, 19:45
Ответы с готовыми решениями:

Как поменять url, не перегружая страницу.
Всем привет. В CMS Kayako 4, в админке, загружается один раз страница(верхнее и боковое меню), и при переходе по менюхам страница не...

Как изменить адрес, не перегружая страницу
Доброго времени. Есть документ по адресу http://example.com/blablabla/aaa. Как перейти на http://example.com/blablabla/bbb, не...

Как удалить стартовую страницу из браузера
Помогите удалить 2343as12.ru при запуске браузера

10
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
09.02.2017, 23:46
Htext, браузер не выделяет для отдельного скрипта свою собственною область или окружение, они конечно могут загружаться и запускаться раньше или позже, но, так или иначе, все выполняется в одном потоке и в одной глобальной области как один единственный скрипт, за исключением веб-воркеров.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
10.02.2017, 01:38
Единственно, что вы можете сделать в данном случае это написать код в 1.js в виде именной функции, и когда нужно очистить переобъявить функцию
JavaScript
1
2
3
4
5
6
7
8
9
  window.test =function () {
    return 5;
  };
  alert (test());
  //переобъявляем
  window.test =function () {
    return 1;
  };
  alert (test());
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
10.02.2017, 02:24
Htиext, мне ваш вопрос кажется несколько странным
код, прописанный в скриптовом блоке (или в подключаемом js-файле) -- он бывает как бы двух видов:
1) либо это набор команд в глобальной области видимости, которые сразу же исполняются, например, var q = 123; alert (q);

2) либо это определение функции (или нескольких функций), которые будут исполнены только тогда, когда эти функции будут вызваны

в первом случае ничего блокировать явно не надо, ибо, как говорится, "поздно пить боржоми, когда почки отвалились" -- прописанные команды уже один раз выполнились
во втором случае блокировка, имхо, тоже не требуется -- достаточным будет просто не вызывать функции, которые были определены, а уж если, допустим, требуется "очистить оперативку" от больших по количеству кода функций, то просто переопределите их на коротенькие (или вообще пустые) функции

или я что-то совсем не так понимаю и вы в понятие "блокировка" вкладываете какой-то иной смысл?
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
10.02.2017, 15:31  [ТС]
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
в виде именной функции
Я тоже думал об этом. Но, в ранее написанных (в т.ч. и чужих) скриптах не всегда функции именные. Проблема - с анонимными функциями. Может, есть какой-то более общий подход?

Добавлено через 8 минут
Цитата Сообщение от kalabuni Посмотреть сообщение
или я что-то совсем не так понимаю и вы в понятие "блокировка" вкладываете какой-то иной смысл?
Да, видимо, я неточно выразился. Имел в виду - функции, вызываемые, например, по таймеру или как обработчики событий.
Цитата Сообщение от kalabuni Посмотреть сообщение
переопределите
Вот как быть с анонимными (неименованными) функциями?

И, кстати, попутный вопрос: можно ли при помощи скрипта как-то узнать список всех функций, имеющихся в памяти (браузера), применительно к загруженной вебстранице? Или, только вручную, анализируя скрипты, например, регулярными выражениями? Но, опять же, как быть с анонимными.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
10.02.2017, 19:47
для уменьшения объёма используемой оперативной памяти существуют давно всем известные методы, такие, например, как
1. исполнение одноразового кода глобальной области, как чёрного ящика, т.е.
код var q = 123; alert (q) надо обернуть в безымянную функцию и запустить её -- после исполнения в оперативке не останется вовсе ничего

2. при работе с таймерами пользоваться clearTimeout () и clearInterval ()

3. большие по объёму код функции надо именовать, чтобы после их использования была возможность эти функции переопределить на малые

4. подгружать большие по коду функции не в заголовке, а в нужном месте и в нужное время по ходу работы страницы

блокировок
это всё не так уж и сложно и работает вполне эффективно и без каких-либо "блокировок"
1
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
10.02.2017, 22:07  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
функции надо именовать
Это возможно, если код пишешь только сам. А если есть уже готовый чей-то код и переделывать его нельзя (можно лишь добавлять дополнительные скрипты, подключаемые отдельными файлами), то не получится так, к сожалению.
Т.е. анонимные функции заблокировать (путем переопределения или еще как) невозможно, я правильно понял?

Добавлено через 7 минут
У меня задача - не столько снизить потребление ОП, сколько - заблокировать работу некоторых "ненужных" скриптов. Т.е. чтобы функции, определенные в них, не работали. Часть из них выполнена в виде анонимных функций.

Добавлено через 9 минут
Цитата Сообщение от kalabuni Посмотреть сообщение
clearTimeout () и clearInterval ()
А возможно ли при помощи скрипта определить идентификаторы таймеров? Т.е. чтобы они определились программно, а не вручную.
Т.е. есть setTimeout(...). А вот функции типа getTimeout() - вроде как, нет.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
10.02.2017, 22:22
Цитата Сообщение от Htext Посмотреть сообщение
возможно ли при помощи скрипта определить идентификаторы таймеров?
идентификаторы назначаются -- var id1 = setTimeout (); и var id2 = setInterval ();
соответственно, если они не назначены, то и определить их нельзя
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
11.02.2017, 09:12  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
идентификаторы назначаются -- var id1 = setTimeout (); и var id2 = setInterval ();
А если назначены, можно их определить (узнать т.е.)?
Иначе говоря, можно ли при помощи скрипта как-то узнать, что именно id1 и id2 являются идентификаторами таймеров? Не заглядывая в код, не проводя его дебаг и т.п.
Ведь если можно было бы узнать имена этих переменных - тогда дело за малым: применить к этим таймерам функции clearTimeout () или clearInterval (), а потом назначить свои таймеры.

Например, в С можно же программно узнать имена загруженных в память процессов, номера открытых портов (для сокетов), имена работающих функций... А в JS, похоже, со всем этим туго?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
11.02.2017, 15:15
Цитата Сообщение от Htext Посмотреть сообщение
в JS, похоже, со всем этим туго?
угу, JS ведь не процедурный язык, как Си
1
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
11.02.2017, 19:13  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
угу, JS ведь не процедурный язык, как Си
Ну, спасибо хоть на этом...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2017, 19:13
Помогаю со студенческими работами здесь

Как обновить контент не перегружая всю страницу?
Мне нужно в статической странице что бы обновлялся определенный блок. Например как в https://hi-tech.mail.ru/ когда идет какая то...

Как удалить JS скрипт из памяти
Есть сайт на Ajax'е. Допустим заходим на страницу регистрации, делаем какие-то действия, переходим на главную и снова на регистрация, но те...

Обновление базы не перегружая страницу
Нужно с активной страницы произвести изменения в базе даных и известить об этом пользователя. Но при этом чтобы страница не обновлялась...

Не перегружая страницу создать новые элементы
Мне нужно не перегружая страницу добавлять новые элементы. вот схематично как это выглядит. http://i.stack.**********/Ddmho.jpg ...

Вирус изменил стартовую страницу браузера,при открытии браузера направляет на сайт
Здравствуйте.У меня такая проблема ,при открытии новой вкладки и практически после каждого клика открывается вкладка с рекламой , поиск...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru