Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery Mobile-每次刷新都会产生一个空白/白色屏幕_Javascript_Jquery_Ruby On Rails_Jquery Mobile - Fatal编程技术网

Javascript Jquery Mobile-每次刷新都会产生一个空白/白色屏幕

Javascript Jquery Mobile-每次刷新都会产生一个空白/白色屏幕,javascript,jquery,ruby-on-rails,jquery-mobile,Javascript,Jquery,Ruby On Rails,Jquery Mobile,所以,我对JQuery Mobile还很陌生。我的网站基本上都在运行,但我碰到了一个奇怪的错误,它只稍微抬起丑陋的头,我似乎无法在上面获得任何牵引力。这个bug主要出现在我使用iOS 7 Safari浏览器时。我只有iPhone5,因此无法在其他版本的iOS上进行测试 问题如下: 使用jquerymobile浏览网站几乎一直都很好。然而,使用手动浏览器刷新和后退按钮的奇怪组合(无法确定确切的组合),我会点击一个无法加载的页面,并且每次刷新或返回时只会看到一个白色屏幕。重新加载该页面的唯一方法是清

所以,我对JQuery Mobile还很陌生。我的网站基本上都在运行,但我碰到了一个奇怪的错误,它只稍微抬起丑陋的头,我似乎无法在上面获得任何牵引力。这个bug主要出现在我使用iOS 7 Safari浏览器时。我只有iPhone5,因此无法在其他版本的iOS上进行测试

问题如下:

使用jquerymobile浏览网站几乎一直都很好。然而,使用手动浏览器刷新和后退按钮的奇怪组合(无法确定确切的组合),我会点击一个无法加载的页面,并且每次刷新或返回时只会看到一个白色屏幕。重新加载该页面的唯一方法是清除我的浏览器历史记录或手动杀死safari。因此,查看我的web服务器终端输出,日志显示它正在呈现*.mobile.erb文件,但没有检索到任何资产

忘了提到我到底在用什么。我将RubyonRails4与Ruby2一起使用,将jQuery1.10.2与jQueryMobile 1.4.2一起使用。我很乐意发布任何你认为有助于回答这个问题的代码,但我真的不知道从哪里开始。我只在LinuxChrome浏览器上对这个问题进行了一次修改,但没能再做一次。我可以在iOS 7的Safari上快速重新编程。有没有人见过或听说过类似的问题?任何形式的指导都会有帮助,这样我可以继续调查。我在研究这件事上确实遇到了麻烦

以下是正确呈现页面时,my webserver终端输出的外观:

Processing by ReviewsController#new as HTML
  Parameters: {"place_id"=>"90"}
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
  Place Load (0.2ms)  SELECT `places`.* FROM `places` WHERE `places`.`slug` = '90' ORDER BY `places`.`id` ASC LIMIT 1
  Place Load (0.2ms)  SELECT `places`.* FROM `places` WHERE `places`.`id` = 90 LIMIT 1
   (0.1ms)  SELECT COUNT(*) FROM `reviews` WHERE `reviews`.`user_id` = 2 AND `reviews`.`place_id` = 90
  Rendered layouts/_header.mobile.erb (1.5ms)
  Rendered layouts/_flash_message.mobile.erb (0.1ms)
  Rendered shared/_error_messages.mobile.erb (0.0ms)
  Rendered reviews/_form.mobile.erb (3.5ms)
  Rendered reviews/new.mobile.erb within layouts/application (9.5ms)
Completed 200 OK in 24ms (Views: 14.6ms | ActiveRecord: 0.7ms | Solr: 0.0ms)


Started GET "/assets/mobile/mobile.css" for 192.168.1.176 at 2014-04-24 13:17:28 -0700


Started GET "/assets/jquery.raty.min.js?body=1" for 192.168.1.176 at 2014-04-24 13:17:28 -0700


Started GET "/assets/mobile/places.mobile.js?body=1" for 192.168.1.176 at 2014-04-24 13:17:28 -0700


Started GET "/assets/joey.png" for 192.168.1.176 at 2014-04-24 13:17:28 -0700


Started GET "/assets/jquery.raty/star-off.png" for 192.168.1.176 at 2014-04-24 13:17:28 -0700
以下是每次刷新时出现白色屏幕时的情况:

Processing by ReviewsController#new as HTML
  Parameters: {"place_id"=>"90"}
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
  Place Load (0.2ms)  SELECT `places`.* FROM `places` WHERE `places`.`slug` = '90' ORDER BY `places`.`id` ASC LIMIT 1
  Place Load (0.2ms)  SELECT `places`.* FROM `places` WHERE `places`.`id` = 90 LIMIT 1
   (0.2ms)  SELECT COUNT(*) FROM `reviews` WHERE `reviews`.`user_id` = 2 AND `reviews`.`place_id` = 90
  Rendered layouts/_header.mobile.erb (1.8ms)
  Rendered layouts/_flash_message.mobile.erb (0.1ms)
  Rendered shared/_error_messages.mobile.erb (0.1ms)
  Rendered reviews/_form.mobile.erb (3.7ms)
  Rendered reviews/new.mobile.erb within layouts/application (10.3ms)
Completed 200 OK in 26ms (Views: 15.8ms | ActiveRecord: 0.8ms | Solr: 0.0ms)

注意,“startedget”语句从未出现过。几乎所有的资产都是缓存的,不需要重新加载。

所以我的直觉似乎是正确的。出于某种原因,某些页面会被缓存,资产永远不会被检索到,我猜在jquery移动世界中,如果发生这种情况,您会看到一个空白的白色屏幕。因此,我向应用程序_controller.rb添加了一些代码,以完全防止缓存。我从这个链接得到这个:

这是代码

before_filter :set_cache_buster

def set_cache_buster
  response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
  response.headers["Pragma"] = "no-cache"
  response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end