Android Firefoxのブックマークレット問題、なんとなくつかめた
Android FirefoxのJavaScriptで
ブックマーク画面や別タブを開いてる間にalert()やprompt()を発動すると、そのalert()から処理が返らなくなり、以降のコードが実行されない
厳密には
・ブックマーク画面を開いてるときに発動したalert()はそもそも表示されない
・別タブを開いてる間に発動したalert()は表示はされるけど、表示を閉じても処理は返らない
件のブックマークレットが動いたのはスクリプトを取得する処理があるためにブラウザ画面に完全に戻ってからalert()を発動していたから
またこの現象の際にalert()が内部的には実行しっぱなしになってるようで、「指定された時間が来て、かつ現在実行されているJSコードが無くなった時」に実行されるsetTimeoutなどの処理が以降そのタブで一生実行されなくなる
Android Firefoxのブックマークレット問題、なんとなくつかめた (3)
該当しそうなissueはあるけど、同じ原因か検証するの面倒
https://github.com/mozilla-mobile/fenix/issues/21122
https://github.com/mozilla-mobile/fenix/issues/23023
Android Firefoxのブックマークレット問題、なんとなくつかめた (2)
現状の簡易的な対処としてはalertなどを使う全てのブックマークレットを (()=>{setTimeout(()=>{ /* コード */ },1000)})() みたいに囲むことだけど
一回バックグラウンドでalert()を実行してしまうとこれも動かなくなるので気づきづらい (タブを開き直すかブラウザ再起動で直る)