0

コードが順番に実行されない理由がわかりません...以下のコードはdocument.write部分を実行しませんが、問題なく実行された後に部分を実行します。タイミングと関係があると思います。ブラウザにを実行させます。一部の部分でsetTimeoutを使用しようとしましたが、機能しないか、間違っています。

function isBrowserMobile()
{
    var iPadAgent = navigator.userAgent.match(/iPad/i) != null;
    var iPodAgent = navigator.userAgent.match(/iPhone/i) != null;
    var AndroidAgent = navigator.userAgent.match(/Android/i) != null;
    var webOSAgent = navigator.userAgent.match(/webOS/i) != null;
    if (iPadAgent || iPodAgent || AndroidAgent || webOSAgent)
    {
       document.write("<body bgcolor='Orange'><b>Mobile browser detected!</b></body>");
       var choice = confirm("Do you want to visit the mobile site?")
       if (choice)
           mobile();
       else
           desktop();
    }
}
4

2 に答える 2

1

編集:

document.write次のように、使用するのではなく、DOMを使用することをお勧めします。

document.body.style.backgroundColor='Orange';
document.body.innerHTML='This is a text';

また、デスクトップブラウザーでコードをテストするtrue ||場合は、if条件の先頭に追加できます。

私の元の答えは、標準ではないinnerTextを使用していました

于 2012-06-20T03:01:49.343 に答える
0

関数が処理を完了する前にブラウザがページを更新することはめったにありません。したがって、document.writeは実行されましたが、関数が完了するまで結果が表示されない場合があります。

ミニテックが言ったように、それはとにかくかなりゴミの機能です。UAスニッフィングではなく、画面サイズに基づいて質問する必要があります。

ドキュメントの読み込みが完了した後に関数を実行すると、toを呼び出すとdocument.write、スクリプトを含むドキュメントのコンテンツ全体が消去されることに注意してください。

于 2012-06-20T03:02:25.550 に答える