- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我遇到了一个奇怪的问题。
当我点击如下三张图片所示的三个页面时
第一步 Controller 欢迎
第 2 步其他 Controller
第3步,回到step1 View Controller 欢迎
最后一张图,当我从 other controllers
回到 controller welcome
时, 即第 2 步到第 3 步。
样式表由浏览器缓存,
第 3 步的 布局与第 1 步 布局不同。
但它们是同一个页面,怎么可能,浏览器似乎缓存了css文件?
我在 application.rb
中添加了两个布局使用的两个 Assets 文件夹 config.assets.paths << "#{Rails.root}/vendor/themes"
themes
├── ace-admin-theme
│ ├── avatars
│ ├── css
│ ├── font
│ ├── images
│ ├── img
│ └── js
└── lenord-single-page-theme
├── css
├── fonts
├── img
├── index.html
├── js
└── rs-assets
在layouts文件夹下添加了welcome.html.haml
,这样welcome_controller
就可以加载这个layout
layouts
├── _header.html.haml
├── application.html.haml
└── welcome.html.haml
所有的源代码我都放在这里https://gist.github.com/poc7667/0198b973fce0fbf4dd26
页面 A:好的 页面 B:好的 页面A:失败,页面B的样式表被缓存,它应该与原始页面A相同
当我为 css 注释 data-turbolinks-track
时它不起作用
奇怪的现象还是出现了。
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -2,7 +2,7 @@
%html
%head
%title VIVOTEK DQA DEVELOPER
- = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
+ = stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application", "data-turbolinks-track" => true
/ Description, Keywords and Author
/ basic styles
diff --git a/app/views/layouts/welcome.html.haml b/app/views/layouts/welcome.html.haml
index 28d9c99..c3e6ec8 100644
--- a/app/views/layouts/welcome.html.haml
+++ b/app/views/layouts/welcome.html.haml
@@ -2,7 +2,7 @@
%html
%head
%title VIVOTEK DQA DEVELOPER
- = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
+ = stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application", "data-turbolinks-track" => true
我打开 firebug 查看包含的 css 文件,我发现我需要重新加载页面以加载预期的 css 文件。如何解决?
当我重新加载页面时,控制台显示那些 css 文件已加载
Started GET "/assets/ace-admin-theme/css/bootstrap.min.css" for 127.0.0.1 at 2014-05-19 14:33:49 +0800
Started GET "/assets/ace-admin-theme/css/font-awesome.min.css" for 127.0.0.1 at 2014-05-19 14:33:49 +0800
当我点击指向其他页面的超链接(通过 url helper)时,css 将不会再次加载。
但实际上它应该再次加载 css 文件,因为一些 Controller 使用不同的布局和 Assets 。
但更糟糕的是,如果我点击链接(由 URLhelper 生成),问题就会发生但如果我通过在浏览器中手动输入 URL 转到该页面,它工作正常!!
简而言之,css 文件只在第一次加载,其他必要的 css 文件(用于其他布局)将不再加载。(如果我通过单击 URLHelperLink 查看页面),但它是手动工作的在浏览器中输入 URL(例如:localhost:3000/welcome、localhost:3000/urlcommands)
最佳答案
How could it be, it seems the browser caches the css files ?
涡轮链接
如果您使用 Turbolinks,情况似乎就是这样。 - 加载新版本的 <body>
标签(离开 <head>
)。这将使您的浏览器在每个请求(触发 turbolinks
的位置)使用相同的 CSS,只有在您使用相同的 layout
时才会出现问题。
这可能不是问题(如果您正在更改布局,整个页面将刷新)
测试这个的方法是关闭 turbolinks:
#app/views/layouts/application.html.erb
<%= stylesheet_link_tag "application", media: "all" %>
如果这样做,Rails 应该每次都刷新整个页面。这将允许您查看样式是否每次都会更改
CSS
您可能遇到的另一个问题是如何调用 CSS。如果您对第 3 步有不同的布局 - 您是否调用了不同的 CSS?
就个人而言,我只会为不同的步骤使用不同的样式,并将它们合并到同一个电子表格中。
这是我使用 SASS 的方式:
#app/assets/stylesheets/application.css.sass
.service
.step1
//styling
.step2
//styling
.step3
//styling
更新
我想说这里的问题很可能是您使用 Turbolinks 的代码结构。我 90% 确定问题出在 Turbolinks 上(特别是当你写到你“需要刷新”文档以使 CSS 工作时)
您能否分享您的布局以及如何在 Controller 中调用它们?
关于css - 在不同 Controller 中加载不同布局时样式表损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625635/
我是一名优秀的程序员,十分优秀!