背景:写js代码时写了很多console.log进行日志打印,最后上生产时不想删除日志输出,

但是ie在不打开控制台时,日志输出会导致后续js不执行,所以需要适时屏蔽js日志输出

(IE等不支持console.log命令的浏览器,不仅无法执行console.log而且会因为该命令导致页面出错而无法正常执行。)

注:经验证在IE7/8下有效。

背景:写代码的时候,很多地方都加了这个方便调试,但是在发布产品的时候,部分浏览器下会报错
将这些代码注释后就没问题了。但是,注释的地方太多了,而且下次修改的话还得把注释改回来,难道没有其他的办法避免这些问题么?

(function() {
var noop = function noop() {};
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = window.console || {}; while (length--) {
// Only stub undefined methods.
console[methods[length]] = console[methods[length]] || noop;
}
}());

1、重写浏览器console日志输出,避免浏览器因不支持或未启用console.log导致的js不往下执行的问题

    <script>
if(typeof window.console === "undefined") {
//浏览器不支持或未启用console,则禁用日志
window.console = {
log:function(){}
};
}
</script> 或者: if (!window.console) {
console = {
log: function (info) {
return false
}
}
}

2、增加日志输出手动开关

    if(typeof window.console === "undefined") {
//浏览器不支持console,则禁用日志
window.console = {
log:function(){}
};
}else{
//浏览器支持console
var url = window.top.location.href ;
if( url.indexOf("127.0.0.1") != -1 || url.indexOf("localhost") != -1 || url.indexOf("openlog") != -1 ){
//如果是本机,或者开启了日志,则正常使用console
}else{
//非本机,也未开启,则禁用console
window.console = {
log:function(){}
};
}
}

避免console错误,console兼容 (http://blog.csdn.net/yfx000/article/details/44350489)

避免console错误,console兼容的更多相关文章

  1. console、JSON兼容问题

    console在ie8上面竟然有兼容问题,JSON.stringify()在ie10下竟然会报错,再页面上引用一个json2.js能解决此问题.

  2. 菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方案

    泛型在实际的工作中应用非常广泛,关于泛型就不在这里赘述了,感兴趣请戳<重新认识泛型>.项目中用到了如下的泛型: public <T> T query(String sql, R ...

  3. 【测试代码执行时间】console.time + console.timeEnd 打印输出耗时

    // 计时开始,内部文字为计时ID,开始要和结束保持一致 console.time('计时器1') // 需要测试执行时间的代码 for (let index = 0; index < 1000 ...

  4. 让IE兼容console——“由于出现错误80020101而导致此项操作无法完成”的解决方案

    问题描述 经测试发现问题只出现在: 1.原生IE8(其他版本IE模拟出的IE8无此问题) 2.从打开IE8没有开启过F12(曾经开启过又关闭的无此问题) IE8报错“由于出现错误80020101而导致 ...

  5. Console对象与错误处理机制

    console的常见用途有两个. 调试程序,显示网页代码运行时的错误信息. 提供了一个命令行接口,用来与网页代码互动. console对象的浏览器实现,包含在浏览器自带的开发工具之中.按 F12 打开 ...

  6. Js 关于console 在IE 下的兼容问题

    程序员在开发代码的过程中,使用console作为调试代码过程的一种手段. 发布到测试生产环境,发现IE8 出现加载错误.使用开发者工具调试,发现可以绕过问题. 通过网络搜索和在项目中进行修正. 以下办 ...

  7. 请尝试使用 Console.Read。错误原因

    当出现错误: 如果应用程序没有控制台或控制台输入已通过文件进行了重定向,则无法读取键.请尝试使用 Console.Read. 一定是在非控制台应用程序中用了Console.ReadKey(); Con ...

  8. 浏览器兼容console对象的简要解决方案

    不同浏览器或者版本之间对于console对象的支持不尽相同,而console方法在开发调试过程中都是不错的工具.难道要在上线前把所有console.xxxx去掉以保证某些浏览器不报错么.其实可以变通解 ...

  9. IE8下提示&#39;console&#39;没有定义错误

    在开发的过程中因为调试的原因,在代码中增加console.info("xxxx"),而未进行删除 在IE8下測试该代码所在的页面报错,例如以下: 须要注意的是,使用console对 ...

随机推荐

  1. Matlab2015 双目相机自动标定

    标定步骤 调出标定工具箱 在命令行输入stereoCameraCalibrator,出现如下界面: 勾选相应的选项 然后将上面的“Skew”.“Tangential Distortion”以及“3 C ...

  2. flask 发送QQ邮箱

    from flask import Flask from flask_script import Manager, Shell from flask_mail import Mail, Message ...

  3. elementui bug ..

    .el-menu { overflow: hidden !important;} element 菜单导航栏 会 超出 父组件一点..在组件中加上上边那句来隐藏!!!

  4. Foremost恢复Linux中已删除的文件

    Foremost 我们只能在Linux中恢复已删除的文件,只要这些扇区在硬盘上没有被覆盖. 首先安装 要在CentOS上安装Foremost,我们将从官方网页下载并安装最前面的rpm.打开终端并执行以 ...

  5. 给新人看的 JavaScript的继承

    //这个继承方式是给新人看的,逻辑简单一些 Object.extend=function(props){ //继承父类 var prototype=Object.create(this.prototy ...

  6. 红米note_维修_开机键

    1. 2.在线人工客服(20180919) 很荣幸为您服务,有什么问题可以帮助到您的- 我的手机 后边的 开机键 貌似 不太行了 您好,您是哪款手机 就是 要按 好几次 很用力 才能 开亮手机屏幕木 ...

  7. 网站ico那点事儿

    一. 如何获取某个网站的favicon.ico http://moco.imooc.com/player/report.html 今天看到这个网站上,左侧的小图片挺好看的,想弄下来,检查源码,也没有看 ...

  8. ModelSim使用教程

    参考[百度文库]

  9. Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错

    <!-- 添加oracle jdbc driver --> <dependency> <groupId>com.oracle</groupId> < ...

  10. DB Intro - MongoDB Relations

    https://www.quackit.com/mongodb/tutorial/mongodb_create_a_relationship.cfm