generated at
alert()やconfirm()を回避する
alert()で出てきたOKボタンとかキャンセルボタンってjavascriptで取得できるんですかね…?yosider
OKとキャンセルがあるのはconfirm()だった
JSからクリックしたい
僕も昨日それ思ってたdnin
ブラウザ固有の物なので無理ではkuuote
おそらくできないし、てきたらもはや警告windowの意味をなさないtakker
ユーザへ警告を出さずに、ありとあらゆる危険な操作を勝手にできてしまうことになる
たしかにyosider
開発者コンソールでalert()やconfirm()を上書きすると回避できるというworkaround
js
const originalConfirm = window.confirm; window.confirm = (nope) => { return true; }
ん?てことはこれを使えばScrapboxページの自動削除が可能に……?
2021-02-02 13:26:23 自動削除できた。こわいtakkeryuki_minoh
邪悪なハックだ。。。yuki_minoh
というかこんなことがまかり通っちゃうJavaScript怖すぎだろ……
なんでこんな地雷言語がweb programmingの第一線で使われ続けているんだ
よくわからないけどconstみたいに上書きできないようにはなってないんだろうか?yosider
JavaScriptの仕様としてwindowオブジェクトがGlobal Scopeという物があって、オブジェクトの中身は普通書き換え可能なので(つらい)
へえ〜
Object.freezeを適用したら凍結はできるけど、多分やるとグローバルスコープを書き換える前提になっているものが軒並み死ぬ
windowを凍らせたら変数とか関数とか何も登録できなくなりそうyuki_minoh
これが原因やなyuki_minoh
デフォルトが「編集可能」「書き込み可能」になっている
Object.defineProperty(window, "confirm", {value: _confirm, writable:false, configurable:false}) で見た目ロックしたみたいにはできますね
confirmを常にtrue出すように上書きしてもconfirmダイアログが(ちゃんと表示されて)falseを返す
事前に var _confirm = window.confirm をやってます
ただ、この後Object.definePropertyをもう一回実行されると突破されますね笑
対抗するには Object への参照を吹き飛ばす他ない
TamperMonkeyが使えた
Linkclumpと組み合わせてページを一括削除できる
もしかしてFooViewってこれを使ってダイアログ無視してるのか?