草庐IT

带有更多内容的 HTML5 缓存 list 出现奇怪的错误

coder 2023-08-07 原文

我正在缓慢但肯定会完全迷上 HTML5 网络存储和应用程序缓存。

这是我的例子: http://daviddarx.com/stuffs/work/custom/54/

缓存 list 有效并在 http://manifest-validator.com/ 上进行了测试: http://daviddarx.com/stuffs/work/custom/54/cache.manifest

因为它不工作,我采取了一个非常简单的工作 example然后尝试一步一步添加我的部分代码和数据,添加很少,然后我再次测试它。

当我从简单的示例开始时,一切都运行良好。如果我将 iPhone 置于飞行模式,我会在启动网站时收到一条离线消息,但随后我可以查看结果。

当我添加一些 Assets (页面中的 HTML 代码、1-2 张图像等)时,它仍然有效。

如果我然后添加更多 Assets (例如,css 和所有关联的图像),问题就开始了......如果我进入平面模式然后打开页面,我会收到正常消息(我当它工作时获取),然后是另一条消息,要求我重试或取消。如果我取消,网站就不会显示并且应用程序会关闭,如果我按下重试按钮,我会一次又一次地收到相同的消息....

我真的不知道该怎么办。每次我在测试前验证我的缓存 list ,每次我更改 URL 以确保一切都已重置。

这与缓存文件的权重有关系吗? 有大小或文件限制吗?

另一点:在测试之前,我总是在我的计算机上的控制台中检查我的页面,以确保这不是一个明显的问题。事实上,每次尝试都在桌面浏览器上获得成功,并加载了所有 Assets 。

你知道那可能来自哪里吗?


编辑: 我又做了很多测试,但仍然无法正常工作。

这里是情况的摘要:

  1. > 这是我正在测试的版本:http://daviddarx.com/stuffs/work/custom/61/

2。 这是我的缓存 list :http://daviddarx.com/stuffs/work/custom/61/manifest.appcache 根据 http://manifest-validator.com/ 完全有效.

3。 当我在 chrome(桌面)上加载页面并在控制台上显示时,一切正常。所有元素都被缓存了,如果我刷新,缓存就没问题了。

4. 当我在我的桌面 chrome 上加载页面并查看网络面板时,我可以看到所有内容都是从缓存中加载的。没有任何丢失的文件。

5. 当我断开我的台式电脑与任何互联网的连接时,它还在工作!如果我在没有任何连接的情况下使用 chrome 浏览网站,我可以显示页面并且一切都很好,就像我希望它在我的 Iphone 上一样。

6. 当我第一次使用我的 iPhone 访问该网站时,一切正常。 Mobile Safari 的控制台没有任何错误。如果我打开“平面模式”并返回到 safari,我可以显示我所在的页面(我以前无法实现)。但是,如果我尝试更改页面,它只会警告我“无法打开页面”,然后取消请求。我只能停留在当前页面。

一切在我的台式电脑上都非常完美,但在我的 Iphone 上却无法正常工作。

你有什么想法吗? 你能在你的桌面和 iphone 浏览器上试试吗?

最佳答案

分析了你的/61/测试版本:

JS 函数 preloadDetailImages 从 CSS 类 content 中提取背景图像 URL,并将其作为 src 属性放入新图像中目的。然后将此图像添加到 DOM,显然是为了让浏览器预加载它。然而,CSS 定义中 URL 周围的 双引号 并未被删除,因此最终成为 src 属性值的一部分。这会产生一个损坏的 URL,该 URL 显然未被缓存,因此无法脱机工作。

这是 CSS 定义:

#websiteContainer #customContainer .content {
    background-image: url("../images/custom_part_background.jpg");
}

使用这段 JS 代码,您可以提取 url() 中的所有内容,包括双引号:

$($(".content")[actualImageLoadingID]).css("background-image")
.split("url(")[1].split(")")[0]

这就是文档中的结尾(注意 "):

<img src="&quot;http://daviddarx.com/stuffs/work/custom/61/mobile/images/custom_part_background.jpg&quot;" style="display: none;">

由于双引号可以是有效的 URL 部分,浏览器将其解释为相对路径并尝试检索 /stuffs/work/custom/61/%22http://daviddarx.com/stuffs/work/custom/61/mobile/images/custom_part_background.jpg%22从你的服务器。我可以在我的 http 嗅探器中看到它。

解决方案:删除 CSS 定义中的引号或在 JS 函数中将其过滤掉。


这可能不是您在 iPhone 上出现缓存问题的主要原因,我宁愿将其添加为评论,但还没有权限。

关于带有更多内容的 HTML5 缓存 list 出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040945/

有关带有更多内容的 HTML5 缓存 list 出现奇怪的错误的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  4. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  5. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  6. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  7. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  8. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  9. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  10. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

随机推荐