我正在构建一个Drupal主题,想知道是否有一种Drupalish方法只有在用户关闭js时才添加css文件。
理想情况下,这应该放在theme.info文件中以保持整洁!
这样的事情是理想的:
conditional-stylesheets[if no javascript][all][] = nojs.css
如果这不可能,那么我将把所有需要JS的css保存在css文件中,并使用JS动态添加它,但这看起来有点乱......
有什么想法吗?
答案 0 :(得分:4)
您不需要条件注释或noscript-tags。默认情况下,Drupal在html元素中添加一个'js'类,如果启用了javascript,则设置一个cookie:
// Global Killswitch on the <html> element
if (Drupal.jsEnabled) {
// Global Killswitch on the <html> element
$(document.documentElement).addClass('js');
// 'js enabled' cookie
document.cookie = 'has_js=1; path=/';
// Attach all behaviors.
$(document).ready(function() {
Drupal.attachBehaviors(this);
});
}
(这是在/misc/drupal.js的第296行。)
只有在启用js时才应用的所有css选择器都可以加上.js
作为前缀。如果需要,可以将这些css规则放在单独的文件中,但不必如此。
答案 1 :(得分:0)
我不太了解drupal,但无论如何这都是一个好问题。根据W3Schools,只有<noscript>
元素允许使用body
标记,因此该标记已经用完。
你有没有考虑过这样做?即使用JavaScript添加特定于脚本的CSS样式表?请参阅here的起点。