按照我自己的评论:
我已经看到了这种行为,尽管它与 jQuery 无关。当您从 JavaScript 调用控制台时,它会引发异常,除非您打开开发者工具,该工具会初始化控制台对象并在之后工作。可能是这样。如果您没有使用控制台,那么我不知道发生了什么(尽管您可能会向我们提供更多细节:实际代码 + jQuery 版本)。祝你好运!
看来确实是这样。好的。我想给你一些关于调试的更多建议。您可以(并且应该)创建自己的类来处理调试。例如,这可以是一种选择:
function Debuger() {
var self = this;
self.cache = [];
self.dump = function() {
if (window.console && window.console.log) {
var l = self.cache.length;
for (var i = 0; i < l; i++)
window.console.log.apply(window.console, self.cache[i]);
self.cache = [];
/* We have console, we can deactivate monitor... */
self.deactivate();
/* ...and even redefine log! */
self.log = function() {
window.console.log.apply(window.console, arguments);
};
}
};
self.log = function() {
var args = arguments;
self.cache.push(args);
self.dump();
};
self.monitor_fn = function() {
self.dump();
};
self.activate = function() {
self.monitor = setInterval(self.monitor_fn, 1000);
};
self.deactivate = function() {
clearInterval(self.monitor);
self.monitor = null;
};
}
只需像这样使用它:
debuger = new Debuger();
debuger.activate();
debuger.log('Test');
它应该可以在任何浏览器下工作(虽然没有测试过),如果console
创建了对象,那么它会将缓存的消息转储到它。显然,您应该根据自己的需要对其进行自定义。