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に移動すると、正しい内容のファイルが表示されます(現時点ではalert()のみ)。閉じられていないコメント、関数宣言の欠落、または「外部JavaScriptが実行されていない」というグーグル検索で得られたものはありません。Firebugは、2番目のファイルが実行されないことを示しています(ファイル内に設定されたブレークポイントで停止することはありません)。ライブHTTPヘッダーは、正しいコンテンツタイプが設定されていることを示しています(application / javascript、application / x-javascript、およびtext / javascriptをすべて同じ効果で試しました。ファイル#1の前にファイル#2を配置しても効果はありません。トランスポートエンコーディングを変更しても効果はありません。文字セットを変更しても効果はありません。<script>
タグを変更して使用する場合と使用language=javascript
しない場合、またはすべてのタグプロパティをtype="text/javascript"
省略した場合は効果がありません。<script>
src
私は公式に立ち往生しています。この穴から私を掘り出すためにあなたが考えることができるものは何でも大歓迎です。