【问题标题】:Read from console.log?从 console.log 读取?
【发布时间】:2014-08-07 14:43:33
【问题描述】:

我是网络开发的新手,所以如果我的问题看起来有点傻,请原谅。是否可以从浏览器的控制台中读取值作为 JS 中的变量。一个例子 : 我收到“ReferenceError:未定义不正确”错误。我想根据该结果创建一个 if/else 语句。这可能吗?

编辑:

我正在使用发送数据的 AJAX 调用,我可以在控制台中看到结果。这是我的代码:

$('#RequestBut').click(function () {
                $.ajax({
                    type: 'POST',
                    contentType: "application/json",
                    dataType: 'jsonp',
                    url: "http://www.google.com/recaptcha/api/verify",
                    data: {
                        privatekey: 'XXXXXXXXXXXXX',
                        remoteip: document.getElementById("ipaddress").innerHTML,
                        challenge: Recaptcha.get_challenge(),
                        response: Recaptcha.get_response()
                    }
                })

            });

我在控制台中看到了我正在寻找的结果。我只想找回它。

【问题讨论】:

  • 如果您正在记录它,您应该已经在某处将值存储为实际程序中的参考。
  • 在浏览器的控制台中,您可以创建一个具有所需值的变量
  • try ... catch 语句围绕你的代码?一种邪恶的方法是覆盖 console.log 方法,但我不推荐它......
  • 您会从关注点分离(调试/实际数据存储)中受益
  • 你要读取的变量名是什么?你的ajax没有回调方法吗?

标签: javascript console.log


【解决方案1】:

您可以在开发者工具控制台中运行任意 Javascript(至少在 Firefox 和 Chrome 中),但这与“从控制台读取”不同。

要输入多行,请使用“shift+enter”而不是“enter”(这将运行脚本)。

所以你可以在控制台写:

try {   /* press shift+enter here */
   bla_bla  /* press shift+enter here */
} catch(e) { console.log(e) }   /* press enter here */

这将捕获 ReferenceError 异常e

【讨论】:

    【解决方案2】:

    如果你家的管道漏水,你是订购大量的水桶来接水,还是直接关掉主水龙头?

    您可以从源头捕获错误,如果您调用的是外部代码,您可能可以使用try { } catch( e ) {}; 捕获错误。您无法读取已记录到控制台的内容,尽管您可能会覆盖日志记录功能并以这种方式捕获所有内容。但这又把你引到我的开场问题上,你是选择一个广泛的、全面的解决方案还是特定于任务的解决方案?

    更新:您不能随意捕获 ajax 调用,这就是 donefail“Promise”回调的用途 (documentation)。比如:

                $.ajax({
                    type: 'POST',
                    contentType: "application/json",
                    dataType: 'jsonp',
                    url: "http://www.google.com/recaptcha/api/verify",
                    data: {
                        privatekey: 'XXXXXXXXXXXXX',
                        remoteip: document.getElementById("ipaddress").innerHTML,
                        challenge: Recaptcha.get_challenge(),
                        response: Recaptcha.get_response()
                    },
                    done: function( data, statusString, jqXHR ) {
                         // do something with data here
                    },
                    fail: function( jqXHR, textStatus, errorThrown ) {
                         // do something with the error here
                    }
                })
    

    【讨论】:

    • 我尝试使用try catch解决问题,但无法产生我需要的结果。
    • 我已经更新了我的答案......如果你从一开始就说你正在使用$.ajax(),那会更容易。
    • 感谢您的回复。它似乎跳过了成功和错误部分。我已经在成功和错误时将警报插入到 AJAX 调用中,但它们都没有被触发。知道可能是什么原因造成的吗?我很抱歉没有提到这是一个 AJAX 调用。对不起。
    • 抱歉……您应该使用.done().fail()(如果需要,还可以使用.always())。我之前提到的successerror 方法早已被弃用,可能不适用于跨域请求。
    【解决方案3】:

    是的,可以从浏览器 JavaScript 控制台读取变量。我猜你正在使用铬。您会收到这种错误,因为您所引用的变量不可访问。可能是您没有将其声明为 global 变量,或者您没有声明该变量。你可以通过写来声明一个全局变量

    <script>
    var myVariable="Hello World";
    </script>
    

    在您的 html 文件中。或者,如果您正在编写 javascript,则只需排除 script 标记。 然后在 JavaScript 控制台中,您应该可以通过在控制台中写入 myVariable 来读取 myVariable 的值。

    【讨论】:

    • 我实际上想从控制台读取到一个 JS 变量。假设我有一个名为 error 的字符串 var。该事件侦听日志中出现的错误。一旦出现 var 错误,就会从控制台获取包含错误字符串的字符串值。至于浏览器,我需要它是跨浏览器兼容的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2016-03-30
    • 2021-03-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多