ボタンクリックから呼び出されるいくつかのjsコードに取り組んでおり、開く必要があるウィンドウが発生する可能性のある非同期アクションを開始します。ポップアップ ブロッカーを防ぐには、window.open 呼び出しがボタン クリックから行われるようにする必要があります。
setTimeout と setInterval をいじって、非同期アクションが完了したかどうかを100ミリ秒ごとにチェックし、必要に応じてウィンドウを開きました。
setInterval を介して n 回関数を呼び出し、n 回目の呼び出しで window.open を呼び出して、 jsfiddleでこれをシミュレートします。
Javascript:
// in chrome this only works with n = 1, otherwise the open-call is blocked
var n = 2
var timer
function tst1() {
console.log('tst1.start ' + n)
if (--n == 0) {
clearInterval(timer)
window.open('http://google.com/', '_blank')
}
console.log('tst1.done')
}
function tst() {
timer = setInterval(tst1, 1000)
}
HTML:
<button onclick="tst()">Click me</button>
問題は、これが初めて機能することです (js コードの最初の行で n=1)。n が 2 以上に設定されている場合、Firefox では機能しますが、Chrome では機能しません。
これを最新のすべてのブラウザーで機能させる方法はありますか?
ロブ