単一のスクリプトの間に改行やセミコロンを挿入することをお勧めします。たとえば、 https:
//ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.jsから取得した縮小されたjqueryuiスクリプトはで終わります
return this}})}(jQuery)
そのすぐ後ろに別のスクリプトを追加すると、構文エラーが発生する可能性があります。
粗雑なscripts.phpを見てみましょう
<?php
header('Content-type: Application/javascript');
readfile('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js');
readfile('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js');
echo '$(document).ready(function() {
alert("hello");
$( "#dialog" ).dialog( "open" );
});
';
これは機能しませんが
<?php
header('Content-type: Application/javascript');
readfile('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js');
echo "\r\n;";
readfile('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js');
echo "\r\n;";
echo '$(document).ready(function() {
alert("hello");
$( "#dialog" ).dialog( "open" );
});
';
意思。
考慮すべきその他の事項:
- これはおそらく特効薬ではありません。「\r\n;」を選択しました a)最後の行の//コメントからエスケープし、b)セミコロンで「open」ステートメントを閉じます。しかし、javascript(およびその実装)のセミコロンの欠落の動作はかなり奇妙である可能性があり(これは悪い機能です)、固定の「修復文字列」を追加するのではなく、個々のスクリプトを手動で「修正」したいと思います。
- 私は「グーグルのようなcdnにそれらのjavascriptライブラリをホストさせ、クライアントのキャッシュに依存させる」キャンプに精通しています...しかし、その立場をサポートするための十分な証拠は手元にありません。