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,将函数替换为函数noty的结果noty。从理论上讲,第一次调用应该可以工作,但是任何后续调用都noty将失败,因为它们试图将对象作为函数调用。我不确定为什么第一个失败,但它可能是相关的。尝试更改要分配结果的对象的名称:

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 回答