diff options
author | Dries Buytaert <dries@buytaert.net> | 2008-08-02 18:56:53 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2008-08-02 18:56:53 +0000 |
commit | 9cec02e4728f27eeb21c43c37633c819d379ddeb (patch) | |
tree | cf1d52738fc5aa4b5e5e97a5222a4f26c763ed61 | |
parent | a859eb3668d583bc8dd4fc33ed8663db1b4927ac (diff) | |
download | brdo-9cec02e4728f27eeb21c43c37633c819d379ddeb.tar.gz brdo-9cec02e4728f27eeb21c43c37633c819d379ddeb.tar.bz2 |
- Patch #158992 by sun, quicksketch, zeta ζ, bangpound, Dries et al: inline Javascript could generate invalid XHTML.
-rw-r--r-- | includes/common.inc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/includes/common.inc b/includes/common.inc index 3d5bff905..46dba975d 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -2063,17 +2063,22 @@ function drupal_get_js($scope = 'header', $javascript = NULL) { // page request. $query_string = '?' . substr(variable_get('css_js_query_string', '0'), 0, 1); + // For inline Javascript to validate as XHTML, all Javascript containing + // XHTML needs to be wrapped in CDATA. To make that backwards compatible + // with HTML 4, we need to comment out the CDATA-tag. + $embed_prefix = "\n<!--//--><![CDATA[//><!--\n"; + $embed_suffix = "\n//--><!]]>\n"; + foreach ($javascript as $type => $data) { - if (!$data) continue; switch ($type) { case 'setting': - $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings, ' . drupal_to_js(call_user_func_array('array_merge_recursive', $data)) . ");</script>\n"; + $output .= '<script type="text/javascript">' . $embed_prefix . 'jQuery.extend(Drupal.settings, ' . drupal_to_js(call_user_func_array('array_merge_recursive', $data)) . ");" . $embed_suffix . "</script>\n"; break; case 'inline': foreach ($data as $info) { - $output .= '<script type="text/javascript"' . ($info['defer'] ? ' defer="defer"' : '') . '>' . $info['code'] . "</script>\n"; + $output .= '<script type="text/javascript"' . ($info['defer'] ? ' defer="defer"' : '') . '>' . $embed_prefix . $info['code'] . $embed_suffix . "</script>\n"; } break; default: |