War*_*olf 2 javascript jquery ios cordova
我使用以下代码来覆盖该console.log函数,因为我只想console.log在showConsole返回时打印true.
var proxyConsolelog = window.console.log;
console.log=function(msg){
try{
if(Boolean(showConsole))
{
proxyConsolelog(msg);
}
}catch(e){
alert(JSON.stringify(e.message));
proxyConsolelog('ERROR-->>'+e.message);
}
}
Run Code Online (Sandbox Code Playgroud)
该proxyConsolelog行会产生问题,并alert(JSON.stringify(e.message));给我一个"类型错误".
我得到了这个:
void SendDelegateMessage(NSInvocation*):委托(webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame :)在等待10秒后无法返回.主运行循环模式:kCFRunLoopDefaultMode
在日志中.
我怎样才能做到这一点?
Den*_*ret 10
你遇到的问题是,this当你调用你的函数时,receiver()不是控制台.
你可以这样做 :
var proxyConsolelog = window.console.log.bind(window.console);
Run Code Online (Sandbox Code Playgroud)
如果您需要与IE8(没有bind)兼容,您可以这样做:
var logFun = window.console.log;
var proxyConsolelog = function(){
logFun.apply(window.console, arguments)
};
Run Code Online (Sandbox Code Playgroud)
var proxyConsolelog = $.proxy(window.console.log, window.console);
Run Code Online (Sandbox Code Playgroud)
获得新功能后,您可以将其称为console.log:
proxyConsolelog('some', {arg:'uments'});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |