4

Chrome と FF では、window.onbeforeunload が null を返した場合、ダイアログ ボックスはポップアップしません。しかし、IE では、「null」というメッセージが表示されます。IE がポップアップを作成しないようにするために、window.onbeforeunload は何も返さないようにする必要があります。しかし、何も返さないと、Chrome と FF に他の副作用はありませんか? そうでない場合、わざわざ「return null;」と書く人がいるでしょうか。そもそも?

たとえば、次のようにします。

window.onbeforeunload = function() { 
  if (shouldNotWarnBeforeUnload)
    { return null; }
  else 
    { return ('Are you sure you want to leave the page?'); }
  return null;
};

この

window.onbeforeunload = function() { 
  if (shouldNotWarnBeforeUnload)
    {  }
  else 
    { return ('Are you sure you want to leave the page?'); }
};

Chrome では異なる動作をしますか?

4

2 に答える 2

2

Chrome では、返すことnullは何も返さないことまたはundefined.
何も返されない場合、ダイアログはポップアップしません。

注: 最初の例では、ifまたはelseブロックが返されるため、イベント リスナーの最後の行に到達することはありません。

などを返す代わりにnullundefined条件を否定するだけです: http://jsfiddle.net/f6uTw/

window.onbeforeunload = function() { 
    if (!shouldNotWarnBeforeUnload) {
        return 'Are you sure you want to leave the page?';
    }
};
于 2012-04-05T15:56:34.420 に答える