2013-03-17 22 views
16

私がしたいのは、表示した後、特定の秒間にアラートボックスを自動的に非表示にする方法です。アラートを表示した後、自動的に非表示にする方法はありますか?

私が知っているすべてである、

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

// This will appear alert after 5 seconds 

私は秒以内にそれを表示した後、アラートを消えるしたい、このための必要はありません。

必要なシナリオ:

  1. 警告表示は

  2. 表示/非あなたはJavaScriptを使用して警告ボックスを閉じることができない2秒

答えて

15

tldrを。 jsFiddle Demo

この機能はアラートでは実行できません。ただし、

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); 
} 

div要素を使用することができ、このように、これを使用してください。JavaScriptを使用しては不可能

tempAlert("close",5000); 
+0

トラヴィスさん、ありがとうございました。カスタムアラートではなくアラートが必要です – maherelghali

+0

これまでのところ、ソリューションには近すぎます。試してみます。 – maherelghali

+0

こんにちは、parentNodeでnullを取得しています...行のel​​.parentNode.removeChild(el); ..それを修正する方法。 – goku

2

内のアラートを終了します。

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

var w = window.open('','','width=100,height=100') 
w.document.write('Message') 
w.focus() 
setTimeout(function() {w.close();}, 5000) 
+1

ほとんどのポップアップブロッカー: 1 - ショーアラート 2秒後にアラートを隠す –

+0

あなたのサポートmr.DoorKnobいただき、誠にありがとうございます...表示から新しいウィンドウを防ぐため、私は自分自身ではないカスタムアラート 例を警告する必要があります。 – maherelghali

+2

@ MaherNajiEl-Ghali次にできません。 JSのアラートを閉じる方法はありません。 – Doorknob

2

。 他の回答の提案の別の選択肢として、jGrowlの使用を検討してください。http://archive.plugins.jquery.com/project/jGrowl

+0

hmmm ..面白い、これはママのうずまきですか? 、私はfuturで、このリソースを使用します。ありがとうMr.Alex – maherelghali

+0

はい、それはgrowlメッセージのように見えるメッセージを表示するjQueryプラグインです。それはスタイリッシュで柔軟性があります。 「n秒後に消える」動作と永久メッセージが組み込まれています。試してみてください) –

1

通知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、モバイルウェブブラウザ(2014年1月)

サポート検索ブラウザhere.

+0

これは「今日のChrome」ではうまくいかないようですが、この回答に影響を与えた素晴らしい通知である新しい通知APIに置き換えられている可能性があります。https://stackoverflow.com/ a/45152906/32453 – rogerdpack

関連する問題