Dex*_*ter 9 javascript debugging google-chrome
有没有办法导出记录到谷歌浏览器的javascript控制台的消息?
如果没有,有人能建议一个很好的方法来诊断客户端机器上的JavaScript问题吗?尽管建立了相同的环境,但我无法在本地复制问题.
mac*_*ost 17
第1步:添加一堆有助于诊断问题的console.log语句
步骤2:添加逻辑以在客户端系统上重新定义console.log,以便它实际将其参数保存到window.log(或其他),而不是实际将它们记录到控制台.
window.log = []
console = console || {"log":function(x) {window.log.push(x);}}
Run Code Online (Sandbox Code Playgroud)
步骤3:添加一个onUnload处理程序,该处理程序将一个AJAX请求激发到您的服务器,其中window.log的内容作为其参数之一
第4步:获利!;-)
这个系统的一个额外好处是(一旦你设置好了)你就可以不加区别地使用console.log,无论你是在你的开发环境还是你的实时环境中,它都会做正确的事情.
这是我之前答案的略短/简单版本.为了简单起见,我们只需对每个日志进行AJAX调用,为了让事情变得更加容易,我们将使用jQuery来完成"繁重的工作".(如果你使用jQuery之外的JS库,它应该有某种类似的方法;如果没有,或者如果你没有使用JS库......时间认真考虑jQuery!)哦,我们会抛出在一些服务器端伪代码中,以证明方程的这一部分是多么容易.
第1步:添加一堆有助于诊断问题的console.log语句
步骤2:添加逻辑以在客户端系统上重新定义console.log,以便在没有控制台的情况下将日志发送到服务器
var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp";
var ajaxConsole = {"log":function(x) {
$.get(SERVER_URL, {"log":x});
}}
console = console || ajaxConsole; // If there is no console, use the AJAX one
Run Code Online (Sandbox Code Playgroud)
第3步:在服务器上创建日志记录页面
以下示例使用伪代码,因为每个人都有不同的服务器端语言:
String log = pageParameters["log"];
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" +
dbEscape(log) +"', current date)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13818 次 |
| 最近记录: |