
onbeforeunload イベントを使って離脱防止ダイアログを表示させていますが、特定のリンクのリンククリックに対しては、ハンドラの戻り値としてnullを返して、ダイアログを表示させないようにしています。
ChromeやEdgeでは想定通りの挙動をしているのですが、IEでは、onbeforeunload イベントのハンドラの戻り値として null を返すと、メッセージ内容として "null" とダイアログに表示してしまいます。
対策をご存知でしたらご教示ください。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
>以下のページにあるようなコードについての話です。
なるほど。要はキャンセルする場合の挙動の差異ということですね。
手元にあったブラウザで試してみましたが、
( IE(11.28)、Fx(66.0)、Chrome(73.0) でテスト )
preventDefault() や returnValue に関してもまだ実装がバラバラな状態のようですね。
https://developer.mozilla.org/ja/docs/Web/Events …
unload時の警告ダイアログのon/offを制御をなさりたいものと推測しましたが、ご提示の方法ではうまくいかないようですね。
試したところ、イベントハンドラに空functionを設定するとキャンセル時と同様に何もしないようになります。
ですので、 null を返すのではなく、何もしなければよさそうです。
flagを参照するなら、
if(flag) return; else return "hogehoge";
みたいな感じでしょうか。
if(!flag) return "hogehoge";
だけで充分ですね。
これにより、flagセット時(=キャンセル)には、試したどのブラウザでもダイアログは出ず、デフォルトの動作が実行されるようになります。
なお、どの様な使い方を考えていらっしゃるのかわかりませんが、ご提示の参考サイトの様に、二種類のイベントを同じタイミングで設定した場合、その処理順序を(論理的な順序が無いものの場合)あてにできるのかに関しては疑問があると感じますので、注意なさったほうが宜しいかと。
No.1
- 回答日時:
こんにちは
具体的な状況がさっぱりわかりませんが、イベントハンドラからの戻り値をそのままダイアログに表示しているということでしょうか?
通常のエンジンであれば「null」を表示させると文字列の"null"として表示されるはずと思います。
(どのような処理によって、結果に差が出ているのか推測できません)
とは言え・・・
戻り値の受け手側で対処するのなら、仮に、値をmessageとして、
message?massage:""
みたいにnullなら空白文字に置き換えてあげるとか、
あるいは、イベントハンドラ側で対処するのなら、
>ハンドラの戻り値としてnullを返して~
戻り値を「空白文字列」などにしておけば済む話ではないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java DAO 日付指定フォーマット...
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
getStringの値がNULLの時の処理
-
Java配列でNullPointerExceptio...
-
C# ListBoxのインデックスの値...
-
空欄のテキストフィールドの判...
-
例外でBeanUtils.populateが、...
-
beanの利用
-
gas カレンダー祭日設定でエラー
-
eclipseでoracle接続時のエラー...
-
JSP での exit? (スクリプトか...
-
「null」と「""」は同じ?
-
jsp/Servletの動的に増えるフォ...
-
オブジェクトの中のプロパティ...
-
ループ処理の際、最後だけ","を...
-
動的配列が存在(要素が有る)か...
-
System.err. printlnとSystem.o...
-
<forEach> 内で供給された "ite...
-
0dの意味を教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
jsp/Servletの動的に増えるフォ...
-
BOOL値を逆にしたい
-
C# ListBoxのインデックスの値...
-
配列にnullを代入すると、null...
-
例外でBeanUtils.populateが、...
-
getStringの値がNULLの時の処理
-
Java配列でNullPointerExceptio...
-
eclipseでoracle接続時のエラー...
-
C#でラジオボタンとコンボボッ...
-
「null」と「""」は同じ?
-
javaの掲示板について
-
if文を通らない
-
空欄のテキストフィールドの判...
-
boolean型ではなくて
-
入力された文字列の制限
-
mysqlへの接続が出来ません
-
逆コンパイルの見方について(...
-
postgresql接続時
-
JSPでの画面表示の方法
おすすめ情報
ご回答ありがとうございます。
状況がうまく伝わらなかったようで申し訳ございませんでした。
以下のページにあるようなコードについての話です。
https://kght6123.jp/blog/2018/08/30/%E3%83%96%E3 …
>戻り値を「空白文字列」などにしておけば済む話ではないのでしょうか?
それですと、ダイアログが表示されてしまいます。