2011-01-24 3 views
0

Я пытаюсь создать модуль для 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 не имеешь никакого эффекта.

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

+4

ваш 2d сценарий тег имеет тип = «текст/Javascipt» который не является текстовым/javascript, и как таковой не будет работать. – Metal

+0

Какая глупая ошибка, которую я сделал! Спасибо! – GRoyce

ответ

1

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

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

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

«есть опечатка в вашем JavaScript» комментарий выше гораздо ближе к истине, вероятно,)

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

: D

+0

Да, в этом проблема. Смущающе, как есть .... – GRoyce

Смежные вопросы