2

我有一个以某种方式设计的 webapp,在 index.html 中它有一个脚本标签:

<script type="text/javascript" src="http://myserver.com/app.js" />

在app.js里面,有这样的代码(w/jQuery):

function _run(data) {
  /* load data, modify dom, show content, page shows to user... */
}
$(function() {
  /* load jsonp that will call above function */
  $.getScript("http://myserver.com/data.js");
});

在data.js里面,有 jsonp 的东西:

_run({foo:'bar'});

我想这是一个奇怪的设置,但我现在需要它。关键是它适用于计算机浏览器。我在使用 iPhone 时遇到问题 - 如果我将其设为网络应用程序(将其添加到主屏幕)。第一次加载会很好,如果我切换到主屏幕并返回 web 应用程序,它会刷新并再次加载就好了。

但是,如果我等待大约半小时或一个小时,然后返回该 web 应用程序 - 它不会加载内容。我看到浏览器的“刷新”图标旋转了一秒钟,就好像它正在重新获取内容一样,但随后它停止了。换句话说,看起来 jsonp 函数没有执行——这反过来又不会加载页面。我在 Safari 控制台中看不到任何错误。

我错过了什么吗?iPhone浏览器有什么特别之处吗?是否以一种奇怪的方式缓存了某些东西?:[

PS:我知道该$.getScript函数每次都会在 url 的末尾添加时间戳(至少在计算机浏览器上)

更新:

发现一个错误,说它找不到谷歌变量(我包括带有脚本标签的谷歌地图,然后声明谷歌变量并使用它)。仅在我在 webapp 上闲置大约一个小时后才会发生这种情况。一旦我重新启动它几次,错误就会消失(仅在一小时后再次发生)。

通过回调修复了该问题(即使执行应该暂停直到脚本标签被下载)。现在与 $ 变量(jQuery)相同的错误。

脚本标签似乎有问题。仅在移动设备上和大约一个小时后损坏。不知道怎么回事。

更新 2:

所以,基本上总结以上所有,我的印象是<script>标签在半小时或一小时后刷新页面后无法随机下载/运行。这发生在我运行 iOS 5.0.1 的旧 iPhone 3G 上(注意它是 webapp 还是 iPhone safari 并不重要)。截至目前,我正在做一堆黑客来检查并重新检查随机js是否存在......总之丑陋。一些 js/移动专家可以帮助我了解发生了什么吗?

4

0 回答 0