【问题标题】:Replacing a document body on the iPhone替换 iPhone 上的文档正文
【发布时间】:2010-10-25 15:18:35
【问题描述】:

我需要能够用从 ajax 请求获得的响应替换整个文档内容。

我尝试分配给document.body.innerHTML,也尝试使用document.write()。 虽然这两者都可以在桌面 Safari 上使用,但我需要 iPhone/iPod Touch 的解决方案。尝试修改 document.body.innerHTML 会产生异常 7,并且在移动 safari 上未定义 document.write() 函数。

我实际上是在等待表单发布完成时显示一个活动指示器。我不希望 safari 在完整完成之前开始呈现响应,因为它可能需要一些时间才能完成。

【问题讨论】:

    标签: javascript iphone ajax dom


    【解决方案1】:

    我刚刚在我的 3G iphone 上进行了测试,通过设置 document.body.innerHTML 效果很好。我确实在测试中使用了 jQuery 来确保在运行 js 之前加载了正文:

    <html>
    <head>
    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {  
        document.body.innerHTML = 'it worked';
    });
    </script>
    
    </head>
    <body>
    This is a test
    </body>
    </html>
    

    【讨论】:

    • 我在 Windows 上使用 safari 4 beta,用户代理设置为 iPhone。这在我拥有的 iPod touch 上不起作用。另外,我将整个 HTML 响应分配给 innerHTML 属性。
    • 嗯,您是否尝试过从 HTML 响应中剥离 html、head 和 body 标签,然后再将其交给 javascript?也许它不喜欢将 html 或 body 标签加载到 body 标签中。
    • @Martin 我假设 ajax 请求包含基于您对此答案的响应的完整页面。假设这是真的,你为什么要使用 AJAX,为什么不将新的正文内容作为一个全新的页面加载。为什么使用 AJAX?设置document.location.href和使用锚标签的目的不就是做你要找的吗?
    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 2020-08-19
    • 2022-01-17
    • 1970-01-01
    • 2016-09-19
    • 2011-12-16
    • 2011-12-24
    相关资源
    最近更新 更多