问题来源:外网IE下,触发js报错。经检测,未清除console造成。清除console后,解决。

问题原因:console.log 原先是 Firefox 的“专利”,严格说是安装了 Firebugs 之后的 Firefox 所独有的调试“绝招”。 这一招,IE8 学会了,不过用起来比 Firebugs 麻烦,只有在开启调试窗口(F12)的时候,console.log 才能出结果,不然就报错。
详细出处参考:http://www.jb51.net/article/30469.htm

解决问题:http://q.cnblogs.com/q/33770/  http://icant.co.uk/sandbox/fauxconsole/
1:Complete cross-browser console.log(),兼容几乎所有浏览器的代码

/ Tell IE9 to use its built-in console

if (Function.prototype.bind && console && typeof console.log == "object") {

["log","info","warn","error","assert","dir","clear","profile","profileEnd"]

    .forEach(function (method) {

        console[method] = this.call(console[method], console);

    }, Function.prototype.bind);

}

// log() -- The complete, cross-browser (we don't judge!) console.log wrapper for his or her logging pleasure

if (!window.log) {

window.log = function () {

log.history = log.history || [];  // store logs to an array for reference

log.history.push(arguments);

    // Modern browsers

    if (typeof console != 'undefined' && typeof console.log == 'function') {

        // Opera 11

        if (window.opera) {

            var i = 0;

            while (i < arguments.length) {

                console.log("Item " + (i+1) + ": " + arguments[i]);

                i++;

            }

        }

        // All other modern browsers

        else if ((Array.prototype.slice.call(arguments)).length == 1 && typeof Array.prototype.slice.call(arguments)[0] == 'string') {

            console.log( (Array.prototype.slice.call(arguments)).toString() );

        }

        else {

            console.log( Array.prototype.slice.call(arguments) );

        }

    }

    // IE8

    else if (!Function.prototype.bind && typeof console != 'undefined' && typeof console.log == 'object') {

        Function.prototype.call.call(console.log, console, Array.prototype.slice.call(arguments));

    }

    // IE7 and lower, and other old browsers

    else {

        // Inject Firebug lite

        if (!document.getElementById('firebug-lite')) {

            // Include the script

            var script = document.createElement('script');

            script.type = "text/javascript";

            script.id = 'firebug-lite';

            // If you run the script locally, point to /path/to/firebug-lite/build/firebug-lite.js

            script.src = 'https://getfirebug.com/firebug-lite.js';

            // If you want to expand the console window by default, uncomment this line

            //document.getElementsByTagName('HTML')[0].setAttribute('debug','true');

            document.getElementsByTagName('HEAD')[0].appendChild(script);

            setTimeout(function () { log( Array.prototype.slice.call(arguments) ); }, 2000);

        }

        else {

            // FBL was included but it hasn't finished loading yet, so try again momentarily

            setTimeout(function () { log( Array.prototype.slice.call(arguments) ); }, 500);

        }

    }

}

}

2:专门为ie下调试js用,Faux Console,使用方法:

2.1.引入css文件,及js文件

<link type="text/css" rel="stylesheet" href="fauxconsole.css" />
<script type="text/javascript" src="fauxconsole.js"></script>

//fauxconsole.css
#fauxconsole{
position:absolute;
top:;
right:;
width:300px;
border:1px solid #999;
font-family:courier,monospace;
background:#eee;
font-size:10px;
padding:10px;
}
html>body #fauxconsole{
position:fixed;
}
#fauxconsole a{
float:right;
padding-left:1em;
padding-bottom:.5em;
text-align:right;
}
//fauxconsole.js
/* Faux Console by Chris Heilmann http://wait-till-i.com */
if(!window.console){
var console={
init:function(){
console.d=document.createElement('div');
document.body.appendChild(console.d);
var a=document.createElement('a');
a.href='javascript:console.hide()';
a.innerHTML='close';
console.d.appendChild(a);
var a=document.createElement('a');
a.href='javascript:console.clear();';
a.innerHTML='clear';console.d.appendChild(a);
var id='fauxconsole';
if(!document.getElementById(id)){console.d.id=id;}
console.hide();
},hide:function(){
console.d.style.display='none';
},show:function(){
console.d.style.display='block';
},log:function(o){
console.d.innerHTML+='<br/>'+o;console.show();
},clear:function(){
console.d.parentNode.removeChild(console.d);
console.init();
console.show();
},/*Simon Willison rules*/
addLoadEvent:function(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}else{
window.onload=function(){
if(oldonload){
oldonload();
}
func();
}
};
}
};
console.addLoadEvent(console.init);
}
  • It tests if there is a console object defined - if there is one this means your browser has a console and the script does nothing else.

//看看有没有console对象定义,如果浏览器定义了console,嘛也不做。

  • If console is undefined, the script creates a new console object and adds a DIV to the body of the document.

//如果没有定义console,fauxconsole.js创建一个console对象,同时在 body中增加一个DIV.

  • It adds a close and clear link to that DIV which allow you to hide or wipe the console.

//给新增的DIV增加一个关闭,清除链接,这样,你就能隐藏或者展开console对话。

  • It provides you with the following methods:

//JS提供了以下功能:

  • console.log(message) - adds message to the log //console.log(message)输出消息
  • console.show() - shows the console //console.show() 展示console
  • console.hide() - hides the console//console.hide()隐藏console
  • The script adds the ID fauxconsole to the DIV (unless there is another element with that ID) and you can style the console using that. The preset CSS fauxconsole.css is pretty basic and shows the console as a grey box fixed to the top right corner of the viewport.

//JS代码增加了一个ID fauxconsole 给那个新增的DIV(文档中不要有重复的ID,若重复,必须更换另一个ID名),通过定义fauxconsole,控制console.在fauxconsole.css中,默认console box固定在浏览器可见区域右上角,背景为灰色。

IE6789浏览器使用console.log类似的方法输出调试内容但又不影响页面正常运行的更多相关文章

  1. 前端不为人知的一面--前端冷知识集锦 前端已经被玩儿坏了!像console.log()可以向控制台输出图片

    前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

  2. console.log、toString方法与js判断变量类型

    Java调用system.print.out()是会调用toString方法打印js里的console.log也是控制台打印,很多时候,我们以为也是调用toString方法,其实并不是.我们在chro ...

  3. 谷歌浏览器console.log()失效,打印不出来内容

    这个问题困扰好几天了,网上说的都说的是下图: 勾选这三个就好了,但是我的本来就是勾选上的,还是不行. 后来发现这个: 把这个去掉就可以了,如下图: 原来是因为之前调试js的时候,使用了这个过滤,导致对 ...

  4. 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue

    Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...

  5. js的线程和同步异步以及console.log机制

    项目上线了,闲下来就写写东西吧.积累了好多东西都没有做笔记~挑几个印象深刻的记录一下吧. js的同步异步以及单线程问题: 都知道单线程是js的一大特性.但是通常io(ajax获取服务器数据).用户/浏 ...

  6. JS之console.log详解以及兄弟姐们邻居方法扩展

    console.log() 基本用法 console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数 ...

  7. console.log()方法中%s的作用

    一.console.log("log信息"); 二.console.log("%s","first","second") ...

  8. js调试console.log使用总结图解

    一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1   如果你j ...

  9. 如何实现监听 console.log

    var lastLog; console.oldLog = console.log; console.log = function(str) { console.oldLog(str); lastLo ...

随机推荐

  1. .NET/C# 使用反射调用含 ref 或 out 参数的方法

    使用反射,我们可以很容易地在运行时调用一些编译时无法确定的属性.方法等.然而,如果方法的参数中包含 ref 或 out 关键字的时候,又该怎么调用呢? 本文将介绍如何反射调用含 ref 或 out 关 ...

  2. Yocto使用小技巧

    1. 借助Yocto编译模块 SRC := mytest obj-m := $(SRC).o KDIR := /media/Yocto/build/tmp/work/poky-linux/linux- ...

  3. 【转】为什么要用GIT而不是SVN

    原文网址:http://www.cnblogs.com/perseus/archive/2012/11/22/2782051.html 使用了近一年的git之后,再使用svn,发现自己svn这种版本管 ...

  4. Docker中配置国内镜像

    1. 为什么要为docker配置国内镜像   在正常情况下,docker有一个默认连接的国外官方镜像,在国外的网友访问该官方镜像自然不成问题,但是国内毕竟不是国外,由于国情不同,中国的网络访问国外官方 ...

  5. java.lang.NumberFormatException:For input string:"undefined"

    在将字符串转换为数字时导致此错误,解决此问题的思路: 1.添加 try catch语句 2.判断字符串是否为数字,将介绍java中判断字符串是否为数字的方法的几种方法 发生错误的代码: java.la ...

  6. CentOS 添加新硬件硬盘,扩展空间而无需重启虚拟机

    运行如下命令,通过重新扫描 SCSI (注:Small Computer System Interface 小型计算机系统接口)总线并添加 SCSI 设备,系统就可以扩展操作系统的物理卷磁盘空间,而且 ...

  7. UE4关于Oculus Rift (VR)开发忠告

    转自:http://blog.csdn.net/cartzhang/article/details/42493843 UE4虚拟现实 实现的注意事项 https://docs.unrealengine ...

  8. sort+函数指针、sort+比较器对象、qsort速度比较

    一.上代码 #include<bits/stdc++.h> using namespace std; #define MAXN 50000000 struct TS { int a, b, ...

  9. 【UVA】11825 Hackers' Crackdown(状压dp)

    题目 传送门:QWQ 分析 $ n<= 16 $ 显然是状压 然后搞一搞(靠着蓝书yy一下) 代码 #include <bits/stdc++.h> using namespace ...

  10. 初尝微信小程序开发与实践

    这可能是一个java程序员最不务正业的一次分享了. 小程序的火热相信不用我多说了,年初的时候老婆去浦东某达面试,甚至都被问有没有小程序测试经验.俨然小程序成为了互联网公司自PC,WAP,安卓,IOS之 ...