使用yepnope / modernizr.load()加载HTML片段

时间:2012-06-21 07:16:00

标签: jquery modernizr yepnope

我有一系列JS和CSS文件正在使用modernizr.load()函数加载和注入页面(这是yepnope.js)。但我想加载一些HTML代码段,将它们放在脚本标记中,稍后在我的javasscript代码中使用它们。

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被禁用时的错误证明了这一点。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。我在javascript中包装了模板文件的内容,因此Modernizt脚本不会抛出错误,并且回调中有新的var。

这是(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>');