3

アプリでtripleflap.jsを使用しようとしています。私の見解は関数を呼び出しています:

<script type='text/javascript' charset='utf-8'>
    TwitterBird();
</script>

したがって、application.jsでは:

function TwitterBird() {
    var twitterAccount = 'ulmicru';
    var showTweet = false;
    var birdSprite='http://127.0.0.1/birdsprite.png';
    tripleflapInit();
}

それから私はそれを実行しようとしています、そしてJavascriptデバッガーは私に言います:

Uncaught ReferenceError: birdSprite is not defined 

/ public /assets/のプリコンパイルされたapplication.jsで私はこれを見ています:

function TwitterBird()
{var e="ulmicru",t=!1,n="http://127.0.0.1/birdsprite.png";tripleflapInit()}

Railsプリコンパイラが変数の名前を変更したようで、tripleflap.jsはそれらを見つけることができません。

アセットの変数の名前変更を無効にすることは可能ですか?

4

1 に答える 1

1

変数定義を関数の外に移動するかvar、次のようにそれらの前にある from を削除してみてください。

function TwitterBird() {
  twitterAccount = 'ulmicru';
  showTweet = false;
  birdSprite='http://127.0.0.1/birdsprite.png';
  tripleflapInit();
}

私はtripleflapInitスクリプトをグーグルで検索し、それを見ました。基本的に、ウィンドウ上で一連の構成変数を直接定義し、それらを上書きすることを期待しています。全体としてかなり厄介なスクリプトですが、それは重要ではありません。

birdSpriteを使用して関数内で定義しているためvar、実際にはその関数にローカルな新しい変数を定義しています。ミニファイヤによって名前が変更されなかったとしても、ウィンドウ定義tripleflapInitはそれを使用せず、ウィンドウで定義された変数を参照します。

定義されていないエラーが発生する理由はわかりませんがbirdSprite、コンパイラが混乱して未使用であると考えて削除した可能性があります。

于 2012-11-25T04:09:56.853 に答える