В моем <body>
есть компонент, который вставляет скрипт, который должен запускаться только после полной загрузки всей страницы:
<script>
$('<script id="smallPlacarScriptdId">\
$(window).load(function() {\
$(".main.right").hide();\
$("#rightzero").show();\
$(".comp.smallPlacard.firstChild").click(function () {\
var clicked = $(this).parent().attr("id");\
$("main.right").hide();\
$("#right"+clicked+"").show();\
});\
})\
<\script>').appendTo("body")
</script>
Этого не происходит, и этот скрипт (1) правильно вставлен в DOM, но (2) не работает (не скрывает .main.right и не показывает #rightzero). Я подумал, что, используя этот подход, я гарантирую, что это будет то же самое, что и просто поместить этот скрипт в нижнюю часть <body>
, но это не так. Фактически, если я помещу это (не динамически как это) в мою страницу, это даст желаемый результат. Я попытался setTimeout()
проверить свою теорию, но я получаю сообщение об ошибке в jQuery, и я заблудился.
3 ответа
Это может быть проблемой:
<\script>').appendTo("body")
Браузер может подумать, что вы на самом деле закрываете тег скрипта. Измените это на
</' + 'script>').appendTo("body")
Проверьте этот поршень: http://plnkr.co/edit/Oc6yrFMdPoW2WV257CBQ?apre >
Просто используйте этот код
<script id="smallPlacarScriptdId">
$(window).load(function() {
$("main.right").hide();
$("#rightzero").show();
$(".comp.smallPlacard.firstChild").click(function () {
var clicked = $(this).parent().attr("id");
$("main.right").hide();
$("#right"+clicked+"").show();
});
})
</script>
Извините, я не прочитал ваш вопрос достаточно хорошо.
Javascript позволит вам получить доступ к необъявленным переменным, так что используйте это в своих интересах. Проверьте, установлена ли переменная, undefined считается ложным, поэтому нет необходимости в инициализации. Как только вы введете код, просто установите его в true, чтобы больше ничего не выполнялось.
Надеемся, что это решит проблему для вас, но вы действительно должны смотреть с сервера, избегая javascript, он раздувает страницу.
<script>
if (!myScriptHasLoaded)
{
myScriptHasLoaded = true;
$(window).load(function() {
$("main.right").hide();
$("#rightzero").show();
$(".comp.smallPlacard.firstChild").click(function () {
var clicked = $(this).parent().attr("id");
$("main.right").hide();
$("#right"+clicked+"").show();
});
});
}
</script>
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.