2017-02-01 5 views
0

У меня есть встроенный 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 и работал.

+0

Не работает ли он, перенося его в другой файл? Какую ошибку вы получаете? – mindOfAi

+1

исправить синтаксис (один из них: должен положить точку с запятой после объявления меню), затем переместить их в файл и вызвать его только над тегом закрывающего тела или снова внутри файла обернуть все в область видимости (например, 'foo = function() {/ * остаток вашего кода * /} ') и вызовите с помощью' window.onload = foo'. и место где угодно. – marmeladze

+0

@marmeladze Я сделал то, что вы сказали, обернув его в область видимости и назвав его «window.onload = foo», и он сработал. Однако теперь я столкнулся с другой проблемой. Код, который мне нужен, чтобы действительно повлиять на js, является «включенным» через [Угловое] (https://angularjs.org/), и, похоже, js не очень нравится. – zaviiox

ответ

0

Итак, какова реальная проблема для экспорта в внешний файл js?

Как всегда, я бы скопировал и прошёл код в новом js. Свяжите его со страницей HTML и напишите функции, которые мне нужны в качестве атрибута тега HTML (например, onload = functioname(); "в теге body). Как сказал Мармеладзе, вы можете обернуть все в уникальной области, чтобы вы могли называть его в теле.

Возможно, вы делаете это, так что, если вы, возможно, сможете лучше объяснить свою проблему, было бы здорово.

1

Как было предложено @marmeladze, я смог обернуть скрипт в область (foo = function() {}) и заставить его работать извне, добавив window.onload = function на страницу HTML.

Смежные вопросы