4
<script type="text/javascript">
    var x = prompt("enter x");
    var y = prompt("enter y");
    alert(x + " " + y);
</script>

この非常に単純なコードは、ユーザーにx、次に を要求yし、両方の値を含むアラートを表示します。デスクトップ ブラウザでは、window.promptwindow.alertがブロックされているため、これは正常に機能します。

モバイル デバイス (この投稿の最後にあるユーザー エージェント) を介して表示する場合、最初のプロンプトはブロックされますが、[OK] を押すと 2 番目のプロンプトはブロックされないため、次のメッセージでアラートがすぐに表示されます (5最初のプロンプトで入力したと仮定します)。 ):

5 null

なぜこれが起こるのですか?解決できますか?

実際の例: http://jsfiddle.net/YEA5w/

Mozilla/5.0 (Linux; U; Android 2.3.5; en-gr; HTC_WildfireS_A510e Build/GRJ90) AppleWebKit/533.1 (Gecko のような KHTML) バージョン/4.0 モバイル Safari/533.1

4

1 に答える 1

0

記録のために、私のSamsung Galaxy S2では、ストックブラウザとFirefoxブラウザの両方で、あなたのフィドルはうまく機能します。

それでも問題が解決しない場合は、またはを使用して、これらのプロンプトが入力されているかどうsetTimeoutsetIntervalを継続的に確認し、入力されている場合はアラートを実行できます。

何かのようなもの:

<script>
    var x = false;
    var y = false;
    var timer = setInterval(function(){
            if(x !== false && y !== false) {
                 alert(x + " " + y);
                 clearInterval(timer);
            }
    },100);
    x = prompt("enter x");
    y = prompt("enter y");
</script>
于 2013-06-03T12:17:50.393 に答える