当提供消息列表时,Jquery noty插件超时不起作用.我从servlet获取消息列表并像这样调用noty.
<script> function callNotification() { <c:foreach var = "message" items = "${sessionScope.notification}"> notify('${message}'); </c:foreach> } function notify(message) { noty({ "text": message,"theme": noty_theme_facebook","layout": topRight,"information","animateOpen":{"height":"toggle"},"speed":500,"timeout":5000,"closeButton":true,"cloSEOnSelfClick":true,"cloSEOnSelfOver":false,"modal":false }) </script>
理想情况下,这应该遍历消息并以5000ms的超时打印它们.但是这会立即打印所有消息.我进一步尝试使用javascript本机setTimeout函数并用此替换了我的callNotification.
function callNotification() { <c:foreach var = "message" items = "${sessionScope.notification}"> (function(message){ setTimeout(function(){notify('${message}');},5000) }('${message}') }} </c:foreach> }
但这也被证明是无效的.奇怪的是,当我替换“layout”时,超时似乎工作正常:中心在notify方法中.我哪里错了.我希望消息显示时间超过5秒,之后第一条消息被自动擦除,然后显示下一条消息.
解决方法
对Noty进行编码,以便在Noty中有按钮时,它会禁用超时.这对我来说没有意义,但事实就是如此.
这是罪魁祸首(第62行):
60: // If we have button disable closeWith & timeout options 61: this.options.closeWith = []; 62: this.options.timeout = false;
只需删除this.options.timeout = false;如果你有一个带按钮的Noty,这将保持超时工作.