【问题标题】:How to copy watched javascript variable in Chrome?如何在 Chrome 中复制监视的 javascript 变量?
【发布时间】:2012-04-06 15:44:18
【问题描述】:

我在 javascript 中设置了一个断点,并正在使用 Chrome 测试一些代码。我还为该值添加了一个监视表达式。

Chrome 在断点处中断并显示值。但是该值很长,并且不会全部显示。我将窗口分隔符向左移动,但它停在屏幕中间。当我双击被监视的变量时,它想要编辑表达式。当我单击并拖动它时,它会选择可见文本,但不是全部。右键单击没有任何作用。

这是我看到的

url: "m=mtgoxUSD&SubmitButton=Draw&r=&i=&c=0&s=&e=&Prev=&Next=&t=S&b=&a1=&m1=10&a2=&m2=25&x=0...

我想复制整个表达式,最后没有...。我该怎么做?

【问题讨论】:

标签: javascript debugging google-chrome copy-paste


【解决方案1】:

Chrome DevTools 的控制台命令行具有内置的“复制”功能:

copy(my_variable)

如果my_variable的值不是字符串,会自动转成JSON。生成的字符串会留在系统剪贴板上以供粘贴。

这是reference doc

【讨论】:

  • 这对我有帮助,尤其是长字符串
  • 如果你有一个长字符串,唯一的方法就是得到它。使用接受的答案没有帮助,它说“字符串太长,无法编辑”
  • 太棒了,我什至不知道这个功能存在!
  • 由我决定,这应该是公认的答案
【解决方案2】:

这个链接有惊人的描述:https://scottwhittaker.net/chrome-devtools/2016/02/29/chrome-devtools-copy-object.html

步骤: 1)右键单击变量并选择“添加为全局变量” 2) 在控制台中,写入 copy(temp1) 3)打开任何编辑器并粘贴

【讨论】:

    【解决方案3】:

    看这个答案 "Is there a way to auto expand objects in Chrome Dev Tools?" ,它遍历对象的所有属性并显示完整的层次结构,包括数据类型和值。

    如果您需要比较应用程序的两种状态,这很有用。

    【讨论】:

      【解决方案4】:

      我在近 3 年后添加了一个较晚的答案,因为使用当前的 Chrome 开发工具,如果你有一个数组,甚至在该变量中只有一个嵌套的 Object 属性,这两种方法都不起作用,遵循这两个答案你最终会得到复制一个字符串,其中有很多 Array[size]Object 字符串交错在实际对象值中,对于复杂的对象层次结构完全无用。

      如果您只需要手动浏览该值,但如果您需要按照问题中的要求复制它,则建议的方法是可以的。

      我建议,特别是如果您需要复制监视的值以将其用作新变量的内容时,是在字符串化后将其转储到控制台。

      显示 Javascript 控制台并输入:

      console.log(JSON.stringify(my_watched_var))
      

      这样,完整的结构将以纯 Javascript 显示,这是一种完全可重用/可复制的方式。

      【讨论】:

      • 我认为您可以通过使用copy() 而不是console.log() 来进一步改进这一点,后者会将字符串直接复制到剪贴板。
      • 很好!如果它可以稍微格式化复制的片段以在变量的每个属性之间添加换行符,那就更好了。我能够使用记事本++对其进行格式化。将所有“,”替换为“,\r\n”。
      • copy(<string variable>) 在 Firefox 中也为我工作。 :)
      • @AXMIM 您可以使用stringify 执行此操作,例如JSON.stringify(my_watched_var, null, 2)
      • 这行得通!我发现如果不在控制台中调用 JSON.stringify 就无法从纯 JavaScript 语言/调试器获取 JSON 对象作为 JSON 非常令人沮丧,但是
      【解决方案5】:

      显示控制台,然后输入要显示的表达式并按 。您将看到整个值,并且可以选择和复制它。

      当调试器暂停时,这甚至适用于涉及在当前执行点范围内的局部变量的表达式。

      【讨论】:

        【解决方案6】:

        这就是我的工作。

        编辑:这适用于 Watch Expressions 面板下方的 Scope Variables。

        1. 双击值切换到编辑模式。

        2. Ctrl+A (windows) 或 Cmd+A (mac) 选择整个值。

        3. Ctrl+C(或 Cmd+C)复制。

        【讨论】:

        • 双击编辑被监视的表达式变量,即url,而不是值
        • aaaah,抱歉,误读了您的帖子。我在“范围变量”部分执行此操作。在那里工作..
        • 谢谢,很好,它在作用域变量部分有效
        • 我认为正确的答案是@L.N.给了,因为在Scope Variables中你只能复制变量的值,所以如果你必须复制表达式的值你必须按照他说的使用控制台。
        • 这个链接有惊人的描述:scottwhittaker.net/chrome-devtools/2016/02/29/… 步骤: 1)右键单击变量并选择“添加为全局变量” 2)在控制台中,写 copy(temp1) 3)打开任何编辑器并粘贴
        猜你喜欢
        • 2011-04-07
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-08
        • 2018-12-23
        相关资源
        最近更新 更多