29

私がやりたいのは、アラートボックスを表示した後、特定の秒以内にアラートボックスを自動的に非表示にするにはどうすればよいですか?

私が知っているのは、

setTimeout(function() { 
      alert('close'); 
}, 5000);

// This will appear alert after 5 seconds

これは必要ありません。数秒以内にアラートを表示した後、アラートを消したいです。

必要なシナリオ:

  1. アラートを表示

  2. 2秒以内にアラートを非表示/終了

4

4 に答える 4

32

tldr; jsFiddle デモ

この機能は、アラートでは使用できません。ただし、divを使用できます

function tempAlert(msg,duration)
{
 var el = document.createElement("div");
 el.setAttribute("style","position:absolute;top:40%;left:20%;background-color:white;");
 el.innerHTML = msg;
 setTimeout(function(){
  el.parentNode.removeChild(el);
 },duration);
 document.body.appendChild(el);
}

これを次のように使用します。

tempAlert("close",5000);
于 2013-03-17T22:13:11.743 に答える
3

Javascriptでアラートボックスを閉じることはできません。

ただし、代わりにウィンドウを使用することもできます。

var w = window.open('','','width=100,height=100')
w.document.write('Message')
w.focus()
setTimeout(function() {w.close();}, 5000)
于 2013-03-17T22:11:34.297 に答える
2

ジャバスクリプトでは無理。他の回答からの提案に代わる別の方法として、jGrowl の使用を検討してください: http://archive.plugins.jquery.com/project/jGrowl

于 2013-03-17T22:29:25.760 に答える
1

Notification API を試すこともできます。次に例を示します。

function message(msg){
    if (window.webkitNotifications) {
        if (window.webkitNotifications.checkPermission() == 0) {
        notification = window.webkitNotifications.createNotification(
          'picture.png', 'Title', msg);
                    notification.onshow = function() { // when message shows up
                        setTimeout(function() {
                            notification.close();
                        }, 1000); // close message after one second...
                    };
        notification.show();
      } else {
        window.webkitNotifications.requestPermission(); // ask for permissions
      }
    }
    else {
        alert(msg);// fallback for people who does not have notification API; show alert box instead
    }
    }

これを使用するには、次のように記述します。

message("hello");

それ以外の:

alert("hello");

注:現在、Chrome、Safari、Firefox、および一部のモバイル Web ブラウザーでのみサポートされていることに注意してください (2014 年 1 月)。

対応ブラウザはこちら。

于 2013-10-29T06:48:02.867 に答える