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已经执行了,但是在函数完成之前可能不会显示结果。

正如 minitech 所说,无论如何,这是一个非常垃圾的功能。您应该根据屏幕大小而不是 UA 嗅探来询问。

请注意,如果该函数在文档加载完成后运行,则调用document.write将清除文档的全部内容,包括脚本。

于 2012-06-20T03:02:25.550 回答