Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как удалить <script> ? (https://javascript.ru/forum/misc/44604-kak-udalit-script.html)

Danxil 25.01.2014 23:10

Как удалить <script> ?
 
Пишу модуль для joomla. При загрузке модуля, из php-файла вставляется <script> такого вида:
<script>
		(function($)
		{
			$(document).ready(function()
			{
				if (!$(document).bxSlider)
				{
					var script = document.createElement("script");
						
					script.type = "text/javascript";
					script.src = "<?php echo JURI::root()?>modules/mod_ext_jshopping_slider_products/assets/js/jquery.bxSlider.min.js";
						
					$("head").append(script);
				}
				$("#slider__list_<?php echo $id_sfx; ?>").bxSlider();
			});
		})(jQuery)
</script>


Как удалить этот <script> после того, как он отработан, не создавая при этом новых скриптов на странице ?

melky 25.01.2014 23:28

пометь скрипт ID'шником и
$('#foo').remove();

только непонятно, зачем

Vlasenko Fedor 25.01.2014 23:29

Как подключать скрипты описал здесь
http://joomlaforum.ru/index.php/topi...tml#msg1240518
Тег скрипт конечно можно и удалить, только смысл в этом какой и для чего

Danxil 25.01.2014 23:37

Цитата:

Сообщение от melky (Сообщение 294072)
пометь скрипт ID'шником и
$('#foo').remove();

только непонятно, зачем

Что бы выполнить
$('#foo').remove();

нужно создать еще один скрипт, который потом тоже нужно будет удалить. Удалять для того что бы страница не захламлялась скриптами.

Danxil 25.01.2014 23:50

Цитата:

Сообщение от melky (Сообщение 294072)
пометь скрипт ID'шником и
$('#foo').remove();

только непонятно, зачем

Цитата:

Сообщение от Poznakomlus (Сообщение 294073)
Как подключать скрипты описал здесь
http://joomlaforum.ru/index.php/topi...tml#msg1240518
Тег скрипт конечно можно и удалить, только смысл в этом какой и для чего

Сначала я так и делал
$doc->addScriptDeclaration($js); //вставляем код js

все ок если модуль используется только в одном месте на странице, но если в двух, то содержимое $js-ов вставлялось в один и тот же скрипт выдавало ошибку

Vlasenko Fedor 26.01.2014 00:04

Цитата:

Сообщение от Danxil
Удалять для того что бы страница не захламлялась скриптами

Для этого есть плагины объединения скриптов к примеру предложенный здесь http://joomlaforum.ru/index.php/topi...tml#msg1198234
вы можете инициализировать статическую переменную и в зависимости от ее состояния подключать скрипт, также вы можете проверить находится ли данный скрипт в массиве $this->_scripts ($doc->_scripts)
тематика данного решения не связана с этим форумом никак

Danxil 26.01.2014 00:08

Фу я туплю, нормально удалил по id)

Цитата:

Сообщение от Poznakomlus (Сообщение 294082)
Для этого есть плагины объединения скриптов к примеру предложенный здесь http://joomlaforum.ru/index.php/topi...tml#msg1198234
вы можете инициализировать статическую переменную и в зависимости от ее состояния подключать скрипт, также вы можете проверить находится ли данный скрипт в массиве $this->_scripts ($doc->_scripts)
тематика данного решения не связана с этим форумом никак

Спс, посмотрю

melky 26.01.2014 00:40

Цитата:

Сообщение от Danxil (Сообщение 294077)
Что бы выполнить
$('#foo').remove();

нужно создать еще один скрипт, который потом тоже нужно будет удалить. Удалять для того что бы страница не захламлялась скриптами.

что? зачем?
вы пробовали, прежде чем отвергать?

Цитата:

Сообщение от Poznakomlus
тематика данного решения не связана с этим форумом никак

джумла не умеет агрегировать скрипты?

danik.js 26.01.2014 07:42

Цитата:

Сообщение от Danxil
Удалять для того что бы страница не захламлялась скриптами.

Гениально! Пойду чистить свои проекты от скриптов. Это ж сколько хлама!!! :lol:

danik.js 26.01.2014 07:49

Я вобще как-то сомневаюсь что код скрипта отработает без ошибки. После окончания парсинга документа скрипты исполняются асинхронно, так что нельзя взять просто так и сразу после добавления скрипта вызвать из него функцию - файл попросту не успеет к этому моменту загрузиться или исполниться.


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