web-dev-qa-db-ja.com

Javascript:なぜalert()は機能しないのにconsole.log()は機能するのですか?

時々、非常に興味深いバグに直面します。私のjavascriptコードは実行中にalert(msg)を表示しませんが、console.log(msg)を使用するとコンソールに表示されます。 alert()の表示を妨げる​​ものは何ですか?

どうもありがとう

18
siebmanb

これは非常に一般的な問題であり、誰もが少なくとも一度この問題に直面しています。 alert()が機能しない理由は、以前に「このページが追加のダイアログを作成しないようにする」チェックボックスをオンにしていたためです。

このコードを見てみましょう。

<script type="text/javascript">

var js_name = ['elem1', 'elem2']

 for (var i = 0; i < js_name.length; i++) {
    alert(js_name[i]);
 };

</script>

コードを実行すると、2つのアラートボックスが表示されます。 [このページが追加のダイアログを作成しないようにする]チェックボックスをオンにして、ページを再度更新すると、アラートボックスは表示されなくなります。

解決策は、そのWebページを閉じてブラウザーで再度開く必要があることです(ブラウザー全体を閉じる必要はありません)。私はあなたがクロムを使用していると仮定しています。 Internet ExplorerまたはFireFoxには、このチェックボックス機能はありません。

24
user1906399

アラート機能を無効にして機能しない場合

alert = function() 
{
 ...
};

alert('hello') // won't show any alert
4
Tareq Salah

私の知る限り、alert()は繰り返し表示される場合を除き、常に表示されます。

これがどのように処理されるかの詳細は、ブラウザによって異なると思います。詳細を共有しますか? :)

1
Croot

これは、開発ツールを開いてレスポンシブデザインモードを有効にしている場合にもFirefoxで発生する可能性があります。 バグです のように聞こえます。

1
Ian Dunn

Firefoxの場合:[オプション]-> [コンテンツ]に移動し、[ポップアップウィンドウをブロックする]チェックボックスをオフにします。ブラウザの再試行。

0
olga

alertconfirm、およびPromptがブラウザーによって無視される可能性があるもう1つの理由は、ドキュメントが値にallow-modalsのないiframe属性を持つsandboxにある場合です。

たとえば、Firefoxは黙ってこれを無視しますが、Chromiumは警告を表示します。

0
Yeti

コンソールログを「アラート」に置き換えると、同様の問題が発生しますが、動作しませんが、console.log動作します。

動作しないコードは次のとおりです。

request(options, function(error, response, body) { // Requesting API

    var statusCode = response.statusCode;

    if(statusCode === 200){
      alert("Success");
    } else {
      alert(error);
    }

作業コードは次のとおりです。

request(options, function(error, response, body) { // Requesting API

    var statusCode = response.statusCode;

    if(statusCode === 200){
      console.log("Success");
    } else {
      console.log(error);
    }
0
Ilknur Mustafov