有什么用console.log?
请通过代码示例解释如何在JavaScript中使用它.
我正在使用Firebug,并且有一些声明:
console.log("...");
Run Code Online (Sandbox Code Playgroud)
在我的页面中.在IE8(也可能是早期版本)中,我收到脚本错误,说"控制台"未定义.我试着把它放在我的页面顶部:
<script type="text/javascript">
if (!console) console = {log: function() {}};
</script>
Run Code Online (Sandbox Code Playgroud)
我仍然得到错误.有什么办法摆脱错误?
javascript internet-explorer internet-explorer-8 ie-developer-tools
根据这篇文章它是在测试版,但它不是在发布?
我目前在我的代码中到处都有这个JS语句:
window.console && console.log("Foo");
Run Code Online (Sandbox Code Playgroud)
我想知道这是否成本高昂,或者在生产中是否有任何负面影响.
我可以自由离开客户端登录,还是应该离开?
编辑:最后,我认为我(以及其他任何人?)能够提出的最佳论点是,通过留下记录消息,在服务器和客户端之间传输的额外数据可能是不可忽略的.如果生产代码将被完全优化,必须删除日志记录以减少发送到客户端的javascript的大小.
看起来我已经重新发明了这个轮子,但不知怎的,这在Internet Explorer 9中不起作用,但在IE6中也是如此.
function debug()
if(!window.console) {
window.console = { log: function() { /* do something */ } };
}
console.log.apply(console, arguments);
}
Run Code Online (Sandbox Code Playgroud)
F12 Debugger告诉我这个"对象"(console.log)不支持'apply'方法.它甚至不被认为是一种功能吗?还有其他指示或想法吗?
假设我想console.log为某些合法的生产原因包含一些调用,比如像单元测试工具这样的东西.显然,如果浏览器没有console,或者如果没有控制台,我不希望这会抛出一个过早的异常.
创建一个简单的log函数来将内容记录到控制台的最佳方法是什么,或者如果没有控制台,则默默地失败而没有错误?
上面提到的问题的答案是:
Run Code Online (Sandbox Code Playgroud)var log = Function.prototype.bind.call(console.log, console); log.apply(console, ["this", "is", "a", "test"]);
可以log在IE上正常调用此函数,apply这里的使用只是为了表明它是可能的吗?并且,我从链接的问题中假设,如果IE的控制台在运行时关闭,这将失败,因此log即使在控制台打开后也无法工作,对吗?如果这是错的,有人可以解释它是如何工作的吗?
这篇ycombinator文章似乎很相关.他们是否正在谈论与上面链接的问题相同的IE行为?
Run Code Online (Sandbox Code Playgroud)Function.prototype.apply.apply(console.log, [console, arguments]);适用于IE9破解的console.log和其他供应商的常规console.log.与使用Array.prototype.slice将参数转换为实数组相同的hack.
这在我的chrome控制台中运行良好.
function echo(){
Function.prototype.apply.apply(console.log, [console, arguments]);
}
Run Code Online (Sandbox Code Playgroud)
简化:
function echo(){
Function.apply.call(console.log, console, arguments);
}
Run Code Online (Sandbox Code Playgroud)
添加支票并返回:
function echo(){
return window.console && console.log &&
Function.apply.call(console.log, console, arguments);
}
Run Code Online (Sandbox Code Playgroud)
上面的例子对我来说足够了.不过,我手头没有IE来测试它.这是安全包装的合理方法console.log吗?
更多问题
按照下面导航答案中的链接,我们看到代码:
Function.prototype.call.call(console.log, console,
Array.prototype.slice.call(arguments));
Run Code Online (Sandbox Code Playgroud)
arguments在这种情况下转换为数组的目的是什么?我想如果你不这样做,它必须在某些浏览器中失败?并且,除了歌剧奇怪的行为和无控制台的浏览器之外,这样的东西不应该适用于其他所有浏览器吗?并且确实prototype在上面的例子中起到了作用,或者我们只是在迂腐... Function.call.call或者Object.call.call或者就此而言isNaN.call.call似乎也是如此Function.prototype.call.call …
所有浏览器都支持这个吗?我想输出错误,console.log()但是想知道这是否支持所有浏览器?
console.log("Error etc");
Run Code Online (Sandbox Code Playgroud) 我在angularjs和internet explorer9上遇到了一些麻烦.看起来,angularjs没有正确加载.如果我开始使用我的应用程序,没有任何工作,但如果我启动ie9的开发工具并刷新页面,我的应用程序将工作,一切都在加载并准备使用.
我不知道,发生了什么以及如何解决这个问题.我使用angularJs版本1.1.5.十分感谢!
我的问题是,我到处都有console.log(..).在FF或Chrome上,一切正常,但是对于II9,会发生一些事情,即在语句console.log(...)之后停止; 从我的JavaScript中删除console.log(..)后,我的应用程序也适用于IE7/8/9.
但我会问为什么IE在console.log上有这么多问题?
我使用local.storage创建了一个简单的任务管理器,我使用console.log来设置一些变量,但是使用它,整个任务应用程序在IE中不起作用.
有没有其他方法可以做到这一点?
以下是其他浏览器中工作任务管理器的小提琴:http://jsfiddle.net/cRse9c/
我正在尝试调试我的IE上没有工作的jQuery(工具)脚本.可以在这里找到一个例子:
http://dl.dropbox.com/u/16799097/www/demo/jQuery_Slider/index.html
它正确加载,第一个(滑动)事件发生,然后没有任何附加.
当我尝试通过使用developer-tools重新加载页面来调试我的脚本时(按下F12键),一切都像魅力一样......如果我无法调试,我该怎么办?
任何帮助将不胜感激,我被困...
javascript ×7
console ×4
logging ×3
console.log ×2
jquery ×2
angularjs ×1
debugging ×1
firebug ×1
wrapper ×1