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

melky 26.01.2014 10:38

Цитата:

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

думаешь, он в оперативную память не залезет?

danik.js 26.01.2014 11:19

melky я не понимаю к чему ты клонишь. Впрочем я оказался не прав: даже во время парсинга скрипт исполнится асинхронно:
<script>
    var script = document.createElement('script');
    script.src = 'data:application/javascript,function%09fn(){alert("ok")}';
    document.head.appendChild(script);
    fn();
</script>


<script>
document.addEventListener('DOMContentLoaded', function(){
    var script = document.createElement('script');
    script.src = 'data:application/javascript,function%09fn(){alert("ok")}';
    document.head.appendChild(script);
    fn();
});
</script>

рони 26.01.2014 11:31

danik.js,
интересно что должны продемонстрировать примеры, когда нажмёшь кнопку посмотреть. куда смотреть чего ждать?

danik.js 26.01.2014 12:38

Цитата:

Сообщение от рони
куда смотреть чего ждать?

Консоль открой. Увидишь ошибку что функция fn не определена.

Синхронно скрипт можно вставить через document.write() во время парсинга.

рони 26.01.2014 12:58

danik.js,
:write: а так? или это не про то?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<script>
document.addEventListener('DOMContentLoaded', function(){
    var script = document.createElement('script');
    script.src = 'data:application/javascript,function%09fn(){alert("ok")}';
    document.head.appendChild(script);
    window.setTimeout('fn()', 0)
    //fn();
});
</script>

</body>

</html>

Vlasenko Fedor 26.01.2014 13:06

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

Danxil 26.01.2014 13:27

Цитата:

Сообщение от Poznakomlus (Сообщение 294146)
какой смысл удаять тег если скрипт будет все равно в памяти?
можете перегрузить обернув все в фунцию, но все эти действия похожи на извращенческие, с неправильной архитектурой и порядком действий

Т.е. нормально, если скрипт после выполнения так и останется висеть на странице ?

Так он и обернут в функцию
<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>

Vlasenko Fedor 26.01.2014 13:33

Цитата:

Сообщение от Danxil
Т.е. нормально, если скрипт после выполнения так и останется висеть на странице

Что значит висеть на странице?
Всегда выносите js код в отдельные файлы, не засоряйте html разметку страницы

Danxil 26.01.2014 13:58

Цитата:

Сообщение от Poznakomlus (Сообщение 294157)
Что значит висеть на странице?
Всегда выносите js код в отдельные файлы, не засоряйте html разметку страницы

Дело в том, что в самом скрипте я использую пхп, в примере выше видно. Т.е. если подключать файл, то нужно подключать script.php, а не script.js
соответсвенно из этого пхп-файла будет в любом случае на страницу вставлятся тег script

Vlasenko Fedor 26.01.2014 14:37

Цитата:

Сообщение от Danxil
Дело в том, что в самом скрипте я использую пхп, в примере выше видно

что мешает прописать значения php переменных вручную
и пример с <script src="/script.php" type="text/javascript"></script> также имеет право на жизнь
где код script.php
<?php
header('Content-type: text/javascript; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT');
header("Content-Encoding: gzip"); //сжатие если не работает удалить строку
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
?>
//здесь уже js
alert('Work');


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