Я пытаюсь создать модуль для Drupal для очистки некоторых встроенных javascript, которые помещаются на каждую страницу. Проблема в том, что файлы, которые я генерирую, не выполняются браузером, когда они включены в тег <script>
. Вот основной обзор того, что я делаю:php сгенерированные файлы javascript не excecute
модуль специальный код (этот код выполняется всякий раз, когда посещается 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 not executing». Firebug показывает, что второй файл никогда не выполняется (он никогда не останавливается в точке останова, установленной в файле). Live HTTP Headers показывает, что был установлен правильный тип контента (я пробовал приложение/javascript, application/x-javascript и text/javascript с одинаковым эффектом. Помещение файла # 2 перед файлом # 1 не имеет никакого эффекта. Изменение транспортных кодировок, не имеет никакого эффекта. Изменение кодировки символов не имеет никакого эффекта. Изменение <script>
тега использовать language=javascript
с или без type="text/javascript"
или опуская все <script>
свойства тега кроме src
не имеешь никакого эффекта.
Я официально застрял. Что-нибудь вы можете придумать, чтобы выкопать меня из этой дыры.
ваш 2d сценарий тег имеет тип = «текст/Javascipt» который не является текстовым/javascript, и как таковой не будет работать. – Metal
Какая глупая ошибка, которую я сделал! Спасибо! – GRoyce