У меня есть встроенный Javascript в моем <body>
, который я пытаюсь экспортировать в .js-файл. Я знаю, что обычно вы просто копируете/вставляете его, иногда включаете его в функцию готовности документа, но что-то об этом отличается. Я не очень уверен в JS, и код не был написан мной (но был предоставлен бесплатно онлайн).Перемещение встроенного Javascript во внешний файл .js
Код указан в моем файле. Если вам нужна дополнительная информация, просто спросите!
<body>
<script>
(function (window, document) {
var menu = document.getElementById('menu')
, WINDOW_CHANGE_EVENT = ('onorientationchange' in window) ? 'orientationchange' : 'resize';
function toggleHorizontal() {
[].forEach.call(document.getElementById('menu').querySelectorAll('.custom-can-transform'), function (el) {
el.classList.toggle('pure-menu-horizontal');
});
};
function toggleMenu() {
// set timeout so that the panel has a chance to roll up
// before the menu switches states
if (menu.classList.contains('open')) {
setTimeout(toggleHorizontal, 500);
}
else {
toggleHorizontal();
}
menu.classList.toggle('open');
document.getElementById('toggle').classList.toggle('x');
};
function closeMenu() {
if (menu.classList.contains('open')) {
toggleMenu();
}
}
document.getElementById('toggle').addEventListener('click', function (e) {
toggleMenu();
e.preventDefault();
});
window.addEventListener(WINDOW_CHANGE_EVENT, closeMenu);
})(this, this.document);
</script>
</body>
UPDATE: я смог обернуть сценарий в области видимости (foo = function() {}
) и заставить его работать извне путем добавления window.onload = function
на страницу HTML. Это было предложено @marmeladze и работал.
Не работает ли он, перенося его в другой файл? Какую ошибку вы получаете? – mindOfAi
исправить синтаксис (один из них: должен положить точку с запятой после объявления меню), затем переместить их в файл и вызвать его только над тегом закрывающего тела или снова внутри файла обернуть все в область видимости (например, 'foo = function() {/ * остаток вашего кода * /} ') и вызовите с помощью' window.onload = foo'. и место где угодно. – marmeladze
@marmeladze Я сделал то, что вы сказали, обернув его в область видимости и назвав его «window.onload = foo», и он сработал. Однако теперь я столкнулся с другой проблемой. Код, который мне нужен, чтобы действительно повлиять на js, является «включенным» через [Угловое] (https://angularjs.org/), и, похоже, js не очень нравится. – zaviiox