2017-02-01 17 views
0

<body>に.jsファイルにエクスポートしようとしているインラインJavascriptがあります。私は通常、あなたは単にドキュメントの準備機能にそれを含むことがありますが、それをコピー/ペーストすることを知っていますが、これについては何かが異なります。私は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() {})でスクリプトをラップし、それをHTMLページにwindow.onload = functionを追加することにより、外部から仕事を得ることができました。これは@marmeladzeによって提案され、働いた。

+0

別のファイルに移行すると機能しませんか?あなたはどんなエラーを出していますか? – mindOfAi

+1

構文を修正してください(その1つ:メニュー宣言の後にセミコロンを置く必要があります)、ファイル内でそれらを移動し、最後のbodyタグ、またはファイル内で再度呼び出す はスコープ内ですべてをラップします= function(){/ *残りのコード* /} ')を呼び出し、' window.onload = foo'を呼び出します。どこにでも置けます。 – marmeladze

+0

@marmeladze私はあなたが言ったことをスコープでラップし、 'window.onload = foo'で呼び出すことでそれを実行しました。しかし、今私は別の問題に走っています。 jsが実際に影響を及ぼすコードは、[Angular](https://angularjs.org/)を介して 'included'されているので、jsがあまり好きではないようです。 – zaviiox

答えて

0

だから、それを外部のjsファイルにエクスポートするのに本当の問題は何ですか?

いつも私は新しいjsでコピーし、過去のコードを使用します。それをHTMLページにリンクして、HTMLのタグの属性として必要な関数(bodyのタグの中の "onload = functioname();")を書いてください。 marmeladzeによると、すべてをユニークな範囲でラップすることができるので、あなたはそれを本体で呼び出すことができます。

多分あなたはそれをやっているかもしれませんが、多分あなたの問題をよりよく説明できれば素晴らしいでしょう。

1

@marmeladzeで提案されているように、スクリプトをスコープ(foo = function() {})にラップして、HTMLページにwindow.onload = functionを追加して外部で動作させることができました。