nsIWindowWatcherを使って全てのダイアログを捕捉する
相当ニッチな用途ですけど、
- window.alert()
- window.confirm()
- window.open();
- window.openDialog();
- window.print();
などなど、特別なダイアログが開いた事を検出するにはnsIWindowWatcherを使うと出来るようです。
var wwatch = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher); var observer = { observe: function(aSubject, aTopic, aData) { if (aTopic != "domwindowopend") return; aSubject.addEventListener("load", function() { aSubject.close(); }, false); } }; wwatch.registerNotification(observer);
のようにobserverを作って登録してあげると、alert等のダイアログが全てclose()されます。
ちなみに、
- aSubject
- ChromeWindow or Window
- aTopic
- イベント名
- aData
- 恐らくnull
のようにobserverに渡される模様。
例えば、もう余り見ないけどalertとかのブラクラとかはこの手の記述である程度防げるんじゃないかなーと。
参考にしたのは、
- http://developer.mozilla.org/en/docs/Code_snippets:Dialogs
- I LOST 53 POUNDS!!! Garcinia Cambogia Review - Rush Nutra - Amazing!! Almost the double my Goal - YouTube
辺りです。