0

チェックアウトページ(FoxyCartテンプレート)にNoty (jQuery通知プラグイン)をインストールしようとしています。チェックアウトテンプレートのセクションに次のコードをインストールしました。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/jquery.noty.js"></script>

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/top.js"></script>
<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/topLeft.js"></script>
<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/topRight.js"></script>
<!-- You can add more layouts if you want -->

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/themes/default.js">
</script>
<script type="text/javascript">
var noty = noty({text: 'noty - a jquery notification library!'});
</script>

私が正しく理解していれば、正しく表示するために必要なのはこれだけです。何らかの理由で、通知がポップアップしていません。この行に何か問題がありますか?

<script type="text/javascript">
var noty = noty({text: 'noty - a jquery notification library!'});
</script>

Notyをインストールする必要があるページは次のとおりです。

4

1 に答える 1

1

ドキュメントのバグを再現しています。この線

var noty = noty({text: 'noty - a jquery notification library!'});

グローバルコンテキストで実行する場合は、を再定義し、関数を関数の結果にnoty置き換えます。理論的には、この最初の呼び出しは機能するはずですが、オブジェクトを関数として呼び出そうとしているため、以降の呼び出しは失敗します。最初のものが失敗する理由はわかりませんが、関連している可能性があります。結果を割り当てるオブジェクトの名前を変更してみてください。notynotynoty

var notyObj = noty({text: 'noty - a jquery notification library!'});

それはそれを修正するかもしれません。

通知を作成した後で通知を操作する必要がない場合は、結果を変数に割り当てずに通知を呼び出すこともできます。

noty({text: 'noty - a jquery notification library!'});

アップデート

非グローバルコンテキスト(jQueryのイベントなど)内でそのステートメントを実行すると、変数の巻き上げreadyのために機能しません。巻き上げは任意のステートメントを受け取り、それをステートメントの先頭に移動します。ステートメント:var

    (function () {
        var noty = noty({text: 'noty - a jquery notification library!'});
    }());

に変わります:

    (function () {
        var noty; // inside this function noty now refers
                  // to a local variable set to "undefined"

        // JavaScript looks for local variables before it looks at globals,
        // so it will use the new local "noty" when it tries to execute the
        // right side of this line. This will fail because you
        // can't invoke undefined
        noty = noty({text: 'noty - a jquery notification library!'});
    }());
于 2012-12-05T11:09:41.820 に答える