回顾下上个项目UI遇到的问题

上个项目出去已经有2个月了,项目的UI我不参与Coding,只是出现问题的时候我去给救救火。

现在回顾下遇到的比较奇葩的问题吧。

我们的UI要支持IE8以上,Firefox, chrome具体什么版本我也忘记了,反正至少是要支持HTML5的版本吧。

1. IE11下页面不改变

跟踪之后发现连请求都没有发,怎么可能。我们发请求的是Ajax所以想到是可不可以从ajax入手,因为让客户去改动什么东西总是不好的。

最后发现Ajax在IE11下缓存了,请求,有一个能用的方法是每个请求后面加上一个唯一的ID,好欺骗IE每次请求数据的URL都是新的,但是天啊,我们那么多地方都发请求,全改一遍,项目也基本稳定了,太伤了,后来发现ajax已经有这方面的设置了。

$.ajax({
  cache: false,
  //other options...
});

2. FireFox debug打开的时候总提示not-well-formed。

 最开始想到的是json格式的问题,我们在chrome和IE没有出现这个提示,以为是他们对json数据的验证没有firefox严格,所以把返回的数据贴到IDE中format后一个个看,没有发现任何问题,于是可以想到的时候firefox有什么设置可以做到不出现这些错误,最后发现了firefox有对返回头和数据对比的习惯,所以就找到说是可以在jsp中设置content type = "application/json" 来避免这个问题,但是我们有很多个JSP文件而且之前看过那么多项目也很少会看到在页面设置这样的代码。于是就继续看有没有更加简单的方法,后来我们找到了。

在servlet 的filter中做处理,下面是doFilter的最简单方法。

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        //Add this to avoid firefox's giving error "not-well formed"
        res.setContentType("application/json");
        chain.doFilter(req, res);
    }

 3.如何在项目中用多个不同的Jquery版本。

随着项目越来越复杂,各种包的引用也越来越多,我们就遇到了用多个Jquery版本的问题。

好在Jquery已经考虑到这方面的问题了。var $jq = $.noConflict(true);就是一个解决方案。

项目代码太多,下面例子来自网上

<script src="jquery-1.5.js"></script>
<script src="jquery-1.11.js"></script>
<script>
    // 现在window.$和window.jQuery是1.11版本:
    console.log($().jquery); // => '1.11.0'
    var $jq = jQuery.noConflict(true);
    // 现在window.$和window.jQuery被恢复成1.5版本:
    console.log($().jquery); // => '1.5.0'
    // 可以通过$jq访问1.11版本的jQuery了
</script>
<script src="myscript.js"></script>

相关推荐