Drupal以编程方式删除JavaScript

时间:2011-06-21 15:32:03

标签: javascript drupal

我试图在用户使用IE时禁用JavaScript。有没有办法在template.php或自定义模块中完成此操作?

2 个答案:

答案 0 :(得分:1)

作为处理$vars['scripts']内容的替代方法,<head>是包含要在$header_javascript = array( 'core' => array( 'misc/jquery.js' => array( 'cache' => TRUE, 'defer' => FALSE, 'preprocess' => TRUE, ), 'misc/drupal.js' => array( 'cache' => TRUE, 'defer' => FALSE, 'preprocess' => TRUE, ), ), 'module' => array(), 'theme' => array(), 'setting' => array( array('basePath' => base_path()), ), 'inline' => array(), ); 标记中输出的HTML的字符串,您可以使用drupal_add_js(NULL, NULL, 'header')返回的值,类似以下一个:

$vars['scripts']

“module”索引包含对从模块添加的JavaScript文件的引用,“settings”包含模块通常添加的所有JavaScript设置,“inline”包含内联JavaScript代码。
如果您需要区分不同的JavaScript文件,并且(例如)不接触任何标记为“核心”的JavaScript文件,它可能会有所帮助。

平衡是为了填充$vars['scripts']的内容,您需要复制drupal_get_js()中使用的部分代码。由于您需要一个自定义代码,您不会复制该函数的所有代码,但您仍然会复制其中的一部分。

在Drupal 7中,变量template_preprocess_page()不再传递给{{1}}(以及模块或主题实现的类似预处理函数);它被传递给template_preprocess_html()

答案 1 :(得分:0)

您可以使用template.php中的preprocess_page()挂钩。

function YOUR_THEME_preprocess_page(&$vars) {
  if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) {
    $vars['scripts'] = 'get a mac!';
  }
}

显然你应该用$ vars ['scripts']内容做一些更聪明的事情:)