【问题标题】:Phonegap - HTML files that don't include .htm/.html in the filenamePhonegap - 文件名中不包含 .htm/.html 的 HTML 文件
【发布时间】:2012-11-01 06:08:05
【问题描述】:

使用 Phonegap,使用以下代码以编程方式从一个页面切换到另一个页面是微不足道的:

window.location.href = "someDestination.html";

但是,我注意到由于某种原因,如果目标文件的扩展名不是“.html”,这将不起作用。例如以下代码:

window.location.href = "someOtherDestination";

...将导致 PhoneGap 失败并显示以下错误消息:

无法加载网页并出现错误:帧加载中断

我原以为 PhoneGap 会足够智能,可以检查目标文件的内容以确定它是否是有效的网页(例如,通过查找 <html> 标签),而不是试图依赖于多余的文件扩展名等信息。但这似乎并非如此。

所以我的问题是,为什么PhoneGap 关心文件名是否以.htm/.html 结尾,我如何让它不再关心这个?

【问题讨论】:

    标签: javascript android iphone html cordova


    【解决方案1】:

    哈哈:

    function getHTMLFile(str) {
        return str + '.html';
    }
    
    function getHTMFile(str) {
        return str + '.htm';
    }
    

    ;-)

    不,但说真的,这是 window.location.href 规范的一部分。这不是 PhoneGap 特定的问题。您将无法简单地使用 javascript 覆盖它(请参阅 this)。

    【讨论】:

    • 你是什么意思它是“规范的一部分”?当您想将浏览器重定向到某些动态 HTML 内容时,没有什么可以阻止您说 window.location.href = '/someServlet/someAction';。如果您在 somePage 文件中有一些静态 HTML 内容,它也同样有效,只要托管服务器默认将响应内容类型设置为 text/html。因此,在引用本地资源时,应该采用完全相同的方法。
    【解决方案2】:

    我也遇到过这个 Cordova/Phonegap 3.0

    在我的页面顶部附近,我有一个重定向。我知道,这不是“响应式设计”,而是显示适合 iPhone 的 UI 的一个很好的临时解决方案。

    <script>
      if (navigator.userAgent.match(/(iPhone|iPod).*AppleWebKit/i)) {
        window.location = "iphone/";
      }
    </script>
    

    因同样的错误而失败。改成

    window.location = "iphone/index.html";
    

    修正了错误

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2023-04-04
      • 2010-11-16
      • 2021-10-31
      • 2012-02-17
      • 2012-02-18
      相关资源
      最近更新 更多