【问题标题】:Firefox not rendering jQuery templatesFirefox 不呈现 jQuery 模板
【发布时间】:2012-07-20 14:15:17
【问题描述】:

我正在为我开发的网站使用 jQuery 模板,它们在 Chrome、Safari 甚至 IE9 上运行良好,但这些模板无法在 Firefox 上呈现。我在外部加载它们,并且 $.get 被处理(我已经检查了 Firebug,get 通过并拉出正确的文件),但随后我看到一个空白页面并检查 html 显示 body 元素仅包含页脚(包含在 html 中),但显示:无,这是它应该的样子,所以 javascript 运行完成(因为页脚隐藏在 loadtemplate 函数中)。 Firefox 似乎只是跳过了 $.tmpl() 调用。这是函数:

var loadTemplate = function(templateName){
     $.get(templateName, function(template){
        $.tmpl(template).appendTo("body");
    });
};
var loadHomePage = function(){
    history = [];
    clearPage();
    loadTemplate("./templates/home.tmpl");
    current_page = "./templates/home.tmpl";
}
var clearPage = function(){
  $(".page-content").remove();
  $(".page-header").remove();
  $("#popup-container").remove();
  $(".page-footer").hide();
};

任何帮助将不胜感激,如果需要,我也可以跟进更多代码。

编辑:即使在 Opera 上工作,我也不需要支持它,所以样式不起作用(使用 Opera 不支持的 LESS 和严格用于 IE 的 css 文件),但它仍然加载模板而不一个问题。

【问题讨论】:

  • 你对 $.get 请求做过调试吗?它抛出错误吗?该错误可能不会出现在 firebug 中,您应该在其上使用 .fail() 回调。
  • $.get 返回代码 200 或代码 304,Firebug 实际上允许您查看“获取”的文件,这是完全正确的
  • 是的,但这并不能告诉你 jQuery 是否正确解析了响应。
  • 在 .error() 回调和 .done .fail() 中都添加了,但它没有进入其中任何一个。编辑:当然不是同时
  • 接下来要测试的是确认您传递给 $.tmpl() 的值,以确保它在 Firefox 中与其他浏览器相同。

标签: javascript jquery templates firefox jquery-templates


【解决方案1】:

请求模板可能会被某些浏览器处理为 HTML,这反过来又会导致模板损坏。尝试将数据类型设置为“文本”,以便所有浏览器正确返回未修改的文本。

$.get(templateName, function(template){
    $.tmpl(template).appendTo("body");
}, "text");

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2015-01-10
    相关资源
    最近更新 更多