相关疑难解决方法(0)

console.log的正确包装器,具有正确的行号?

我现在正在开发一个应用程序,并放置一个全局isDebug开关.我想换行console.log以方便使用.

//isDebug controls the entire site.
var isDebug = true;

//debug.js
function debug(msg, level){
    var Global = this;
    if(!(Global.isDebug && Global.console && Global.console.log)){
        return;
    }
    level = level||'info';
    Global.console.log(level + ': '+ msg);
}

//main.js
debug('Here is a msg.');
Run Code Online (Sandbox Code Playgroud)

然后我在Firefox控制台中得到了这个结果.

info: Here is a msg.                       debug.js (line 8)
Run Code Online (Sandbox Code Playgroud)

如果我想用debug()被调用的行号记录,info: Here is a msg. main.js (line 2)怎么办?

javascript

119
推荐指数
11
解决办法
6万
查看次数

console.log.apply无法在IE9中运行

看起来我已经重新发明了这个轮子,但不知怎的,这在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)

相关: 对javascript的Apply()问题

F12 Debugger告诉我这个"对象"(console.log)不支持'apply'方法.它甚至不被认为是一种功能吗?还有其他指示或想法吗?

javascript debugging console internet-explorer-9

47
推荐指数
2
解决办法
2万
查看次数

我可以在javascript中扩展控制台对象(用于重新路由日志记录)吗?

是否可以扩展控制台对象?

我尝试过类似的东西:

Console.prototype.log = function(msg){
    Console.prototype.log.call(msg);
    alert(msg);
}
Run Code Online (Sandbox Code Playgroud)

但这没效果.我想通过像log4javascript这样的框架向控制台对象添加额外的日志记录,并且仍然在我的代码中使用标准控制台对象(在log4javascript不可用的情况下).

提前致谢!

javascript logging extend

29
推荐指数
3
解决办法
1万
查看次数

截取Chrome中对console.log的调用

我有一个我无法更改的脚本,它会调用很多console.log.我想添加另一个图层并在调用包含某些字符串时进行响应.这适用于FF,但在第4行Chrome中引发了"非法调用"错误:

var oldConsole = {};
oldConsole.log = console.log;
console.log = function (arg) {
    oldConsole.log('MY CONSOLE!!');
    oldConsole.log(arg);
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决?我也试过克隆控制台......

javascript debugging console

27
推荐指数
3
解决办法
1万
查看次数

使用一个管角2过滤多个列

我正在尝试Array仅使用一个基于多个列过滤数据Pipe.现在,它过滤第一列值.请检查我的下面的代码,并帮助我解决这个问题.

我的代码:

@Pipe({ name: "dataFilter", pure: false })
export class DataFilterPipe implements PipeTransform {
    transform(value: Array<any>, filter: any[]) {
        if (!filter) {
            return value;
        } else if (value) {
            return value.filter(item => {
                for (var i = 0; i < filter.length; i++) {
                    if (filter[i][1] == undefined) {
                        return true;
                    } else if ((typeof item[filter[i][0]] === 'string' || item[filter[i][0]] instanceof String) &&
                        (item[filter[i][0]].toLowerCase().indexOf(filter[i][1]) !== -1)) {
                        return true;
                    }
                    return false;
                }
            });
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

javascript pipe filter typescript angular

17
推荐指数
2
解决办法
3万
查看次数

如何使用javascript或angular2读取浏览器错误?

我需要在后端的日志文件中附加这些错误.angular2中未捕获这些错误.怎么能读出这些错误?Browser Console快照

javascript browser angular

10
推荐指数
1
解决办法
906
查看次数

javascript 中 console.log 的实际拦截器

对于 js console.log 拦截器的通常建议(Capturing javascript console.log?)在两个方面都存在不足,都很严重:

(i) 实际浏览器控制台中的所有调用现在似乎都来自同一行——定义新函数的地方——而不是调用完成的地方

(ii) 截取的参数还没有像这样格式化console.log(即%替换好东西,%o特别是):

(function() {
  function send_stuff(){ /* Deal with console arguments. */ }
  
  var oldLog=console.log;
  console.log=function(msg) {
    oldLog.apply(this,arguments);
    send_stuff(Array.prototype.slice.call(arguments).join());
  }
}())

console.log("test");
console.log("Hello %s", "Bob");
console.log("Here is an object %o", { stuff: "thing" });
Run Code Online (Sandbox Code Playgroud)

也许已经设计了更好的东西(例如能够捕获 console.log 的实际缓冲区内容的东西)。

编辑: 为了澄清多个参数失败:除了扩展文件/行信息之外,console.log 还做了一些巧妙的替换 - a-la-printf - % 序列。特别有趣的是 %o 序列,其中扩展了后续对象的深度转储,并被浏览器的控制台窗口很好地利用。这是无法复制的,除非人们愿意基本上重新实现其逻辑(不必要并且很可能效率低下)

干杯,

javascript

5
推荐指数
1
解决办法
857
查看次数

如何将控制台日志数据提供给WooCommerce Cart?

我正在使用第三方小工具,他们提供实时可用性,成本和立即预订按钮.当客户点击立即预订按钮时,它正在使用他们想要忽略的预订小工具.

在做了一些谷歌研究之后,当一些人点击现在的书籍按钮时,我能够在控制台日志下获得正确的标题和费用.

$w.event.subscribe("item.book.click", function(item) { 
   console.log(item);
   console.log("Title " + item[3].Name + " (Date " + item[4].date  + ", Period " + item[4].period + ", Adults " + item[4].adults + ", Children " + item[4].children + ", Infants " + item[4].infants + ")");
   console.log("Price " + item[3].Availability.Cost);
});
Run Code Online (Sandbox Code Playgroud)

WooCommerce简单产品现场演示:http://plugin.seminyak.holiday/product/the-layar/#/accom/66268

单击立即预订按钮,查看控制台记录它返回的标题和价格值,但如何在弹出按钮中触发控制台数据值,如立即购买添加项目到购物车.

当用户点击ADD ITEM TO CART时,它会将数据添加到/ cart page + basket中.如果有人点击立即购买按钮,它将获取数据并重定向用户on / checkout页面,其中包含控制台标题和价格

如果您有任何疑问,请告诉我.

php wordpress jquery woocommerce woocommerce-bookings

5
推荐指数
1
解决办法
364
查看次数

保存/导出Chrome的JavaScript控制台输入历史记录

无论如何我可以在Google Chrome中保存或导出JavaScript控制台输入(控制台历史记录)的历史记录吗?我不打算保存输出或错误,因此将鼠标悬停在控制台框上,右键单击并选择Save as...不是解决方案.我不想每次都使用箭头键向上滚动并复制并粘贴内容.

javascript google-chrome google-chrome-devtools

4
推荐指数
1
解决办法
909
查看次数