`

如何提高js的稳定性

    博客分类:
  • JS
阅读更多

现在很多流行的js框架设计的都非常不错,尤其像jquery这样的框架,不但小巧简单而且不失去灵活,给我们做前端开发人的无限瞎想。
      很多网站,还是B/S软件都一个很致命的问题,如果不兼容,或者是js出错整个页面就卡起,就因为这样大家一致认为js很垃圾,很不友好,举例子:
var productAgenter=$.infoData.prdagenter;
p.html('');
$('<table><tr><td><span style="color:red">双击代理商可以查看信息</span></td></tr>< /table>').appendTo(p);
var table=$('<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><th width="50%" height="22"><strong>代理商名字</strong></th><th>& lt;strong>代理价格</strong></th></tr>< /table>').appendTo(p);
for(var i=0;i<productAgenter[0].length;i++){
        $('<tr><td height="22">'+productAgenter[0][i]+'</td><td>'+productAgenter[1][i]+'</td></tr>').appendTo(table).dblclick(function(){
        var u='index.php?app=client&action=info&name='+encodeURIComponent($(this).find('td:first').html());
            $.win({url:u,title:'代理商资料',defaultWidth:700,defaultHeight:400});
            table.find('.selected').removeClass('selected');
             $(this).addClass('selected');
                                        }).hover(function(){
                                            $(this).addClass('handover');
                                        },function(){
                                            $(this).removeClass('handover');
                                        });
                                }
如 果数据定义完整的情况下会弹出一个div,div中会显示一个出$.infoData.prdagenter这个内容,这个数据库是从数据库中ajax获 得json,关键问题出现了,用户没有初始化数据库的时候,这个json肯定是null,那下边的程序都出错了,因为没有length这个属性,整个页面 上的所有操作由于这个而中止了,这样体现出我们设计程序的考虑不周,给用户的感觉就是不稳定。
实际上我们想要的效果,就是算他是空的时候,还是要弹出div,只是内容为空就成了,这样用户也知道怎么回事,而整个进程不受影响,就需要加一个操作try{}catch(e){}修改代码如下:
try{

p.html('');
$('<table><tr><td><span style="color:red">双击代理商可以查看信息</span></td></tr>< /table>').appendTo(p);
var table=$('<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><th width="50%" height="22"><strong>代理商名字</strong></th><th>& lt;strong>代理价格</strong></th></tr>< /table>').appendTo(p);
var productAgenter=$.infoData.prdagenter;
for(var i=0;i<productAgenter[0].length;i++){
        $('<tr><td height="22">'+productAgenter[0][i]+'</td><td>'+productAgenter[1][i]+'</td></tr>').appendTo(table).dblclick(function(){
        var u='index.php?app=client&action=info&name='+encodeURIComponent($(this).find('td:first').html());
            $.win({url:u,title:'代理商资料',defaultWidth:700,defaultHeight:400});
            table.find('.selected').removeClass('selected');
             $(this).addClass('selected');
                                        }).hover(function(){
                                            $(this).addClass('handover');
                                        },function(){
                                            $(this).removeClass('handover');
                                        });
                                }

}catch(e){}
这 样就可以解决程序被中断的情况,有问题先忍着,等其的都执行完再说。尤其在根据ajax返回结果处理问题的时候,这个是必须,因为服务端也有可能出错,总 不能让浏览器的左下角报错,停在那里吧!就像我们买东西一样,我买牙刷,也买牙膏,你牙刷坏了我就不买了,但是我要买牙膏啊,总不能牙刷坏了,就一定不能 买牙膏了。用专业的习惯处理这些不专业的问题。在调用别人插件或者写好的方法的时候,请加上,不要承担别人的错误,因为那些插件不见得就是完美的。给它画 个妆免得出来吓人,那就不好办了。

 

转载自:http://hi.baidu.com/itjquery/blog/item/874fae34bc98528da61e12bf.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics