26.01.2014, 10:38
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от danik.js
|
Я вобще как-то сомневаюсь что код скрипта отработает без ошибки. После окончания парсинга документа скрипты исполняются асинхронно, так что нельзя взять просто так и сразу после добавления скрипта вызвать из него функцию - файл попросту не успеет к этому моменту загрузиться или исполниться.
|
думаешь, он в оперативную память не залезет?
|
|
26.01.2014, 11:19
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
danik.js,
интересно что должны продемонстрировать примеры, когда нажмёшь кнопку посмотреть. куда смотреть чего ждать?
|
|
26.01.2014, 12:38
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от рони
|
куда смотреть чего ждать?
|
Консоль открой. Увидишь ошибку что функция fn не определена.
Синхронно скрипт можно вставить через document.write() во время парсинга.
__________________
В личку только с интересными предложениями
|
|
26.01.2014, 12:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
danik.js,
а так? или это не про то?
<!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>
|
|
26.01.2014, 13:06
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
какой смысл удаять тег если скрипт будет все равно в памяти?
можете перегрузить обернув все в фунцию, но все эти действия похожи на извращенческие, с неправильной архитектурой и порядком действий
|
|
26.01.2014, 13:27
|
Аспирант
|
|
Регистрация: 08.11.2013
Сообщений: 37
|
|
Сообщение от Poznakomlus
|
какой смысл удаять тег если скрипт будет все равно в памяти?
можете перегрузить обернув все в фунцию, но все эти действия похожи на извращенческие, с неправильной архитектурой и порядком действий
|
Т.е. нормально, если скрипт после выполнения так и останется висеть на странице ?
Так он и обернут в функцию
<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>
Последний раз редактировалось Danxil, 26.01.2014 в 13:29.
|
|
26.01.2014, 13:33
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от Danxil
|
Т.е. нормально, если скрипт после выполнения так и останется висеть на странице
|
Что значит висеть на странице?
Всегда выносите js код в отдельные файлы, не засоряйте html разметку страницы
|
|
26.01.2014, 13:58
|
Аспирант
|
|
Регистрация: 08.11.2013
Сообщений: 37
|
|
Сообщение от Poznakomlus
|
Что значит висеть на странице?
Всегда выносите js код в отдельные файлы, не засоряйте html разметку страницы
|
Дело в том, что в самом скрипте я использую пхп, в примере выше видно. Т.е. если подключать файл, то нужно подключать script.php, а не script.js
соответсвенно из этого пхп-файла будет в любом случае на страницу вставлятся тег script
Последний раз редактировалось Danxil, 26.01.2014 в 14:03.
|
|
26.01.2014, 14:37
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от 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');
|
|
|
|