― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2007年8月17日(金) 17:41 
下のようなページで、
コード:
<html>
<body onfocus="JavaScript:alert('cant quit')">
</body>
</html>

ダイアログがでて[OK]やダイアログのウィンドウのクローズ[x]を
おすとダイアログが増えていき、他の操作もできないんですけど
回避方法はないですか?
環境は、Firefox 2.0.0.5 Linux版、FreeBSD 6.2-STABLE、KDE 3.5(ウインドウ修飾 Plastik)です。


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2007年8月18日(土) 04:45 
オフライン
Administrator

登録日時: 2006年10月25日(水) 18:00
記事: 2027
お住まい: USA
山茶花 さんが書きました:
下のようなページで、
コード:
<html>
<body onfocus="JavaScript:alert('cant quit')">
</body>
</html>

ダイアログがでて[OK]やダイアログのウィンドウのクローズ[x]を
おすとダイアログが増えていき、他の操作もできないんですけど
回避方法はないですか?

#JavaScript の知識があまりないのでオフトピということで :)
<script></script>の間がどうなっているのか分かりませんが、onfocus="JavaScript:alert('cant quit')" の記述に間違いがあるのでは?

これは山茶花さんが制作したhtml、または公開されているhtmlでしょうか?


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2007年8月18日(土) 11:02 
元のページはどっかので私のではありません。それをすこし変えたものです。
<script></script>はありません。このまま保存してfirefoxで開くと再現できます。
alertのダイアログの[x]をクリックすると一瞬フォーカスが元のウインドウに
切り替わるのでその間Ctrl+Uを連打して、ページのソースを得ました。
firefoxを終了することもメニューバーもツールバーも操作出来ないです。

# ユーザ名(ハンドル)、件名とも空白でしたので追記補足しました。
  投稿時は必ずお名前と件名を入れてください。 (by 管理人 Premier)


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2007年8月18日(土) 12:04 
オフライン
Administrator

登録日時: 2005年6月23日(木) 23:29
記事: 2743
お住まい: 東京
コード:
<html>
<body onfocus="JavaScript:alert('cant quit')">
</body>
</html>

仕様、かなぁと思います。

1. ファイルを読み込む
2. body にフォーカスがあたる。
3. body の onfocus イベントハンドラが発動、 alert を表示(focus は alert に)。
4. alert を閉じる。
5. フォーカスが body に戻る。
6. 3. に戻る
……
こうなるとプロセスを殺さない限り連鎖から抜けられなくなります。

IE7 ではデフォルトでスクリプトの実行が抑制されているため一発目を止められるのと、alert を閉じた後 body にフォーカスが戻らないのかこのような連鎖を防止しているのかはわかりませんが二発目以降は不発でした。

#ウィキペディアにもサンプルがありました 8)

_________________
[Desktop] Windows 10 Pro 22H2 (64bit) / Intel Core i7-2600 / Nvidia GeForce GTX 1650 GDDR6 / 32 GB Memory
[Laptop] Windows 10 Pro 22H2 (64bit) / Intel Core i5-520M vPro / Intel HD Graphics / 8 GB Memory
[Android] Android 13.0 (arm64) / Xperia 5 III (XQ-BQ42)
常用環境: Firefox ベータ版、リリース版 (Win64 x86-64, Android), Thunderbird ベータ版、リリース版 (Win64 x86-64)
テスト環境: Firefox (ESR, Nightly, Win64 x86-64, Android)

Cai/1.0 (Homo sapiens; N; Homo sapiens chemist; male; rv:0.0.4.2+)
-- いつまでたっても nightly


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2007年8月19日(日) 18:22 
オフライン
Moderator

登録日時: 2007年7月20日(金) 14:46
記事: 370
一応、Bugzilla にはクリティカルバグとして登録されてます。

Bug 302787 – alert() in onFocus causes infinite loop of alerts (onfocus triggered after each alert)

Bug 112296 – window.onfocus JS event goes in a loop

_________________
mar


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2007年8月19日(日) 21:23 
回避方法見つかりました!
alert()のダイアログの[OK]か[x]を連打し同時にALT+Homeを連打するというものです。
後はダイアログを新しい順に閉じるだけです。
他には
Alt+← 戻る
Ctrl+W タブを閉じる
でも回避できます。
もう一つウインドウが開いてあればそれで終了できました。


通報する
ページトップ
  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[36人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean