メッセージのリストを入力すると、Jquery noty プラグインのタイムアウトが機能しません。サーブレットからメッセージの一覧を取得し、このように 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"},
"information","animateOpen":{"height":"toggle"},
"speed":500,
"timeout":5000,
"closeButton":true,
"closeOnSelfClick":true,
"closeOnSelfOver":false,
"modal":false
})
</script>
理想的には、これはメッセージをループし、5000 ミリ秒のタイムアウトでメッセージを出力する必要があります。しかし、これは一度にすべてのメッセージを出力します。さらに、javascript ネイティブの setTimeout 関数を使用して、callNotification をこれに置き換えました。
function callNotification()
{
<c:foreach var = "message" items = "${sessionScope.notification}">
(function(message){
setTimeout(function(){notify('${message}');},5000)
}('${message}')
}}
</c:foreach>
}
しかし、これも効果がないことが判明しました。奇妙なことに"layout":center
、notify メソッドを置き換えると、タイムアウトが正常に機能するようです。どこが間違っているのですか。最初のメッセージが自動的に消去され、次のメッセージが表示された後、5 秒のタイムアウトでメッセージを表示したい。