我试图在用户使用IE时禁用JavaScript。有没有办法在template.php或自定义模块中完成此操作?
答案 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']内容做一些更聪明的事情:)