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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Windows 10 MSアカウントの「個人設定をクラウドから削除します」は機能していないのでしょうか? 1 2022/11/20 17:01
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# ListBoxのインデックスの値...
-
BOOL値を逆にしたい
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
getStringの値がNULLの時の処理
-
eclipseでoracle接続時のエラー...
-
(o==null ? get(i)==null : o.e...
-
Safari ダウンロード時に日本語...
-
Java配列でNullPointerExceptio...
-
JSPやサーブレットでSystem.out...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
[JAVA]try 内の変数を外で!?
-
ダブルクォーテーションのrepla...
-
オブジェクトの中のプロパティ...
-
substring バイト単位でやりたい
-
複数のテキストボックスに同じ...
-
ダブルクォーテーションを含む...
-
System.err. printlnとSystem.o...
-
csv出力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
例外でBeanUtils.populateが、...
-
jsp/Servletの動的に増えるフォ...
-
Stringを返す getText()メソッ...
-
gas カレンダー祭日設定でエラー
-
JSPでの画面表示の方法
-
空欄のテキストフィールドの判...
-
C#でラジオボタンとコンボボッ...
-
JSPで複数のSQL実行につ...
-
逆コンパイルの見方について(...
-
Safari ダウンロード時に日本語...
-
java DAO 日付指定フォーマット...
-
oracle10g java jdbc 大量inser...
-
MySQLのテーブル名を変数に置い...
おすすめ情報
ご回答ありがとうございます。
状況がうまく伝わらなかったようで申し訳ございませんでした。
以下のページにあるようなコードについての話です。
https://kght6123.jp/blog/2018/08/30/%E3%83%96%E3 …
>戻り値を「空白文字列」などにしておけば済む話ではないのでしょうか?
それですと、ダイアログが表示されてしまいます。