сгенерированные php файлы javascript не исключают - PullRequest
0 голосов
/ 24 января 2011

Я пытаюсь создать модуль для Drupal, чтобы очистить часть встроенного JavaScript, который размещен на каждой странице. Проблема в том, что генерируемые мной файлы не выполняются браузером, если они включены в тег <script>. Вот основной обзор того, что я делаю:

Код, специфичный для модуля (этот код выполняется при каждом посещении mysite.com/jqsc/MD5_HASH_GOES_HERE, передавая сумму MD5 в качестве первого параметра):

function jquery_settings_cache_get($hash) {
    header('content-type: application/x-javascript');

    if (file_exists(dirname(__FILE__) . "/cache/{$hash}")) {
        exit(file_get_contents(dirname(__FILE__) . "/cache/{$hash}"));
    }
    else {
        watchdog('jqsc', "missing file {$hash}", null, WATCHDOG_ERROR);
        exit("// JQuery Settings Cache error -- missing file {$hash}");
    }
}

Текущий файл HASH.js (связан с тегом скрипта в шаблоне HTML):

alert('it works!');

Текущий вывод HTML (некоторый нерелевантный код был удален):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <base href="http://example.com/sites/all/themes/mytheme/" />
  <script type="text/javascript" src="/sites/default/files/js/js_80a1e7d5d876d5176617603a4bbe39fe.js"></script> <!-- This file loads fine -->
  <script type="text/javascipt" src="/jqsc/deaa654d439f644fd473db0af4d993fe.js"></script> <!-- This file never loads -->
</head>
<body>
</body>
</html>

Перейдя на mysite.com/jqsc/HASH.js, вы получите файл с правильным содержимым (только предупреждение () на данный момент). Там нет комментариев, которые будут закрыты, пропущены объявления функций, или что-то еще, что Google поиска «внешний javascript не выполняется». Firebug показывает, что 2-й файл никогда не выполняется (он никогда не останавливается на точке останова, установленной в файле). Активные заголовки HTTP показывают, что был установлен правильный тип содержимого (я пробовал application / javascript, application / x-javascript и text / javascript - все с одинаковым эффектом. Помещение файла № 2 перед файлом # 1 не имеет никакого эффекта. Изменение транспортной кодировки не имеет никакого эффекта. Изменение кодировки не имеет никакого эффекта. Изменение тега <script> для использования language=javascript с или без type="text/javascript" или пропуск всех свойств тега <script>, за исключением src, не имеет никакого эффекта.

Я официально застрял. Все, что вы можете придумать, чтобы вытащить меня из этой дыры, очень ценится.

1 Ответ

1 голос
/ 24 января 2011

Возможно, вы вызываете неправильный файл здесь:

<script type="text/javascipt" src="/jqsc/deaa654d439f644fd473db0af4d993fe.js"></script>

на вторую мысль. Не обращайте на это внимания из-за полной неудачи.

Комментарий "в вашем javascript" есть опечатка, возможно, намного ближе к истине;)

<script type="text/javascript" src="/jqsc/deaa654d439f644fd473db0af4d993fe.js"></script>

: D

...