Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание и удаление скрипта. (https://javascript.ru/forum/misc/32987-sozdanie-i-udalenie-skripta.html)

dmitry111 06.11.2012 17:44

Создание и удаление скрипта.
 
Не могу понять в чем проблема.

Есть ссылка на создание/удаление скрипта:

<a href="javascript:
            (function () {
                if (document.getElementById('xxx')) {
                    var scrt = document.getElementById('xxx');
                    scrt.parentNode.removeChild(scrt);
                }
                else {
                    var script = document.createElement('script');
                    script.src = 'http://site/xxx.js';
                    script.id = xxx';
                    document.body.appendChild(script);
                }
            }());">создать/удалить скрипт</a>



Почему то при двойном вызове скрипт дублирует выполнения операций.

Разве с удалением скрипта не удаляется всё его содержимое?

dmitry111 06.11.2012 18:04

Дзен-трансгуманист,

имел в виду содержимое скрипта (переменные, функции и тп) - они удаляются из памяти?


В песочнице у меня содержимое срабатывает один раз .. А в рабочем скрипте многократно.. Хотел бы уточнить в этом проблема или я не там копаю? :)

dmitry111 06.11.2012 18:10

Цитата:

Сообщение от Дзен-трансгуманист
Ну правильно, это все равно, что ты дважды подключишь один и тот же скрипт с содержанием
var q;
if (q === undefined) { q = 1; }
alert(q++);

Сначала будет 1, потом 2.



в песочнице выдает 1 всегда..

dmitry111 06.11.2012 18:12

Цитата:

Сообщение от Дзен-трансгуманист
Содержимое скрипта - это текст. Текст удаляется из памяти, да. Результаты же исполнения должны оставаться.

понятно, значит я не там копаю ) Спасибо!

dmitry111 06.11.2012 18:19

И все таки дублирование пропало, когда перестал удалять/создавать скрипт.


Суть в чем - есть букмарклет. При клике на него он создает/удаляет фрейм и скрипт, которые взаимодействуют со сторонним сайтом.

Сейчас сделал иначе - при повторном клике фрейм и скрипт не удаляются - просто у фрейма ставлю display:none;

И проблема исчезла.


Видимо при создании/удалении скриптов на сторонних сайтах содержимое скриптов заносится в память!


Часовой пояс GMT +3, время: 06:58.