【问题标题】:Drupal - special css file if JS is turned off?Drupal - 如果JS关闭,特殊的css文件?
【发布时间】:2010-05-24 11:03:15
【问题描述】:

我正在构建一个 Drupal 主题,并想知道是否有 Drupalish 方法可以仅在用户关闭 js 时添加 css 文件。

这最好放在 theme.info 文件中以保持整洁!

这样的事情会很理想:

conditional-stylesheets[if no javascript][all][] = nojs.css

如果这不可能,那么我会将所有需要 JS 的 css 保留在 css 文件之外,并使用 JS 动态添加它,但这似乎有点混乱......

有什么想法吗?

【问题讨论】:

    标签: javascript css drupal drupal-6 themes


    【解决方案1】:

    您不需要条件 cmets 或 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 规则放在单独的文件中,但您不必这样做。

    【讨论】:

    • 太棒了。感谢您的回答,我相信它也会对其他人有所帮助。
    【解决方案2】:

    我不太了解drupal,但无论如何这都是个好问题。根据 W3Schools 的说法,&lt;noscript&gt; 标签只允许在 body 元素内使用,因此不存在。

    您是否考虑过反其道而行之?即使用 JavaScript 添加特定于脚本的 CSS 样式表?请参阅here 的起点。

    【讨论】:

    • 这看起来很有趣,但我认为在我的特定项目中使用类似 jquery css() 的东西会更合适 - api.jquery.com/css
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多