【问题标题】:Why is my web app failing to reload on open为什么我的网络应用程序无法在打开时重新加载
【发布时间】:2017-11-01 11:58:04
【问题描述】:

我有一个简单的网络应用程序,我想使用 JavaScript 对其进行更新。它实际上是从网站加载数据,但在这个演示中,您会看到它无法写入“Hello World”。虽然它可能不是“最佳实践”代码,但它重现了我在使用更复杂代码时遇到的问题。

如果我在 iOS 11 上的 Safari 中打开它,页面会显示“Hello World”。我可以刷新并做任何我想做的事。但是,如果我将页面添加到主屏幕(应用程序图标)并清理 Safari 缓存,则会发生以下情况:

我打开网络应用程序,一切正常。但是如果我关闭它,转到邮件并返回网络应用程序,它只会显示一个白屏 - 直到我从 Safari 中清除缓存...

此外,如果我反复关闭和​​打开网络应用程序,它最终会崩溃。

任何想法可能是什么问题?

test.html

<!DOCTYPE html>
<html>
    <head></head>
    <body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script>
        $.getScript("test.js", function(){update();});</script>
    </body>
    </head>
</html>

test.js

function update() {
    document.write("<html>");
    document.write("<head>");
    document.write('<title>test</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, viewport-fit=cover"><meta name="apple-mobile-web-app-capable" content="yes">');
    document.write("</head>");
    document.write("<body>");
    document.write("Hello World");
    document.write("</body>");
    document.write("</html>");
}

【问题讨论】:

  • 它会向开发控制台写入一些错误吗?
  • 我在系统日志中得到的是“断言失败:... libxpc.dylib”。但是没有其他我可以追踪到代码的东西。但至少我在 iPhone 模拟器上有相同的行为。
  • 为什么需要 jQuery?您实际上所做的只是通过普通的老式香草 JS 写入文档...
  • 这是因为我想重现 Web 应用程序的一般问题。该代码并不是真正有用,但这应该可以工作。

标签: javascript jquery ios safari


【解决方案1】:

试试这个:

test.html

<!DOCTYPE html>
<html>
    <head>
      <title>
      </title>
    </head>
    <body></body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="test.js"></script>
<script>
   update();
</script>

test.js

function update() {
    $(document).prop('title', 'test');  // or document.title = 'test';
    $('head')append('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, viewport-fit=cover">');
    $('head')append('<meta name="apple-mobile-web-app-capable" content="yes">');
    $('body').html('Hello World');
}

【讨论】:

  • 问题是我想找出我的网络应用程序失败的原因。因此,即使我的代码不是最好的,它仍然应该可以工作。顺便提一句。 .append() 也能正常工作,但应用程序也会失败。
  • 看起来该应用程序确实有效。但是,因为我对其他一些代码也有这个问题,所以我需要找出为什么会发生这种情况。例如,如果我向 body 添加大量 append() ,它也会失败。
  • 在你的页面中,已经有 和 了。您正在尝试再次添加它们的脚本。我认为错误与它有关。
  • 我同意,但为什么它可以在 Safari 上运行,但不能作为 Web 应用程序运行?即使使用 .append()(在网站上 30 次)也会出现此错误。这就是为什么我认为它不相关。但这可能是缓存本身出现问题。如果每次打开网络应用程序时我都可以重新加载它,我就可以解决这个问题......
  • 如果在不使用缓存的情况下重新加载页面:location.reload(true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
相关资源
最近更新 更多