1

modernizr.load() 関数 (これは yepnope.js) を使用して、一連の JS および CSS ファイルをロードしてページに挿入しています。しかし、いくつかの HTML スニペットもロードし、それらを script-tag に入れて、後で JavaScript コードで使用したいと考えています。

HTML スニペットはリモート サーバー (例: domain.com/template/default/tweetlist) にありますが、このファイルを読み込むとすぐに実行され、エラーが発生します。この実行を (URL の前に !noexec を追加することで) 無効にすることができ、これによりエラーが停止しますが、内容がどこに行くのかわかりません。コールバックは応答本文を返しません。

scriptArray.push({
    load: "noexec!domain.com/template/default/"+widgetType,
    callback: function (url, result) {
        console.log("Template loaded!");
        // code to handle response body should go here
    }
})

これは私がこれまでに持っていたコードであり、そのコメントライン (5) に固執しています。

ところで: これはクロスドメインの問題ではありません。コンテンツがロードされ、noexec が無効になっているときのエラーがこれを証明します。

4

1 に答える 1

0

問題の解決策/ハックを見つけました。テンプレートファイルの内容をjavascriptでラップしたので、Moderniztスクリプトがエラーをスローせず、その新しい変数がコールバックで使用可能になります。

これはPHPファイル(の一部)です:

$template = file_get_contents($requestFilepath);
$template = str_replace("\r","",$template);
$template = str_replace("\n","",$template);
$template = str_replace("\t","",$template);
$template = str_replace("\r\n","",$template);
$template = str_replace("\"","'",$template);

echo 'var template = "'.$template.'"';

そしてこれはJavascriptの部分です:

$("body").append('<script type="text/html" id="tpl_'+templateName+'">'+template+'</script>');
于 2012-06-22T07:11:33.490 に答える