Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过chrome控制台与javascript交互_Javascript - Fatal编程技术网

通过chrome控制台与javascript交互

通过chrome控制台与javascript交互,javascript,Javascript,我正在使用购物车api建立一个电子商务网站。创建者制作了一个sdk,然后您必须为其他一些功能创建自己的.js文件 调试时,我会在.js文件的任何地方插入一个console.log(等),以便调试对象选项等 但我希望能够将sdk作为一个实时工具使用,因此,我不必使用新的console.log()行编辑我的.js文件,而只需键入object.color\u代码,并让控制台为对象颜色代码输出该字符串即可。目前,虽然它只是给了我一个未捕获的引用错误,但对象并没有定义 我认为这是因为我的自定义.js文件的

我正在使用购物车api建立一个电子商务网站。创建者制作了一个sdk,然后您必须为其他一些功能创建自己的.js文件

调试时,我会在.js文件的任何地方插入一个
console.log(等)
,以便调试对象选项等

但我希望能够将sdk作为一个实时工具使用,因此,我不必使用新的
console.log()
行编辑我的.js文件,而只需键入object.color\u代码,并让控制台为对象颜色代码输出该字符串即可。目前,虽然它只是给了我一个未捕获的引用错误,但对象并没有定义

我认为这是因为我的自定义.js文件的所有脚本都在
$(function(){EVERYTHING})中console.log
,它就会工作。有什么办法可以解决这个问题吗


请随意解释为什么它不起作用,但我希望有一种方法来启用它,不要告诉我没有方法,即使我必须在每次来自的.js文件中添加我想要的前缀,我不介意

一种可能的解决方法是在全局范围中公开要调试的对象:

(函数(){
var privateStuff={foo:'bar'};
//将PrivateTuff公开以进行调试
窗口['debugObject']=privateStuff;
})(); 

document.write(debugObject.foo)您可以更改如下声明

$(function(){
  var cart = {};
})


但您将希望避免污染全局名称空间。您还需要小心在回调或循环中使用全局变量,因为局部变量的作用域通常是保持局部的,这一点是正确的,因为函数中的所有变量都是局部定义的,因此无法通过控制台访问。然而,在Javascript中,至少有两个选项用于从函数内部设置全局变量;如果使用这些来声明要从函数外部访问的变量,则该变量将起作用:

  • 为未声明的变量赋值:
    varname=value

  • 将变量分配给
    窗口
    对象:
    window.varname=value
    窗口['varname']=值


  • 如果您愿意更改源文件,那么您可以将希望访问的任何内容作为全局文件从所有内容导出

    $(function() { 
      //EVERYTHING
      ...
    
      window.Ireply = window.Ireply || {};
      window.Ireply.object = object;
      ...
    });
    
    console.log(Ireply.object); // some object
    

    请举例说明您要记录的内容。抱歉,当然,sdk提供了一种创建客户端的方法,该客户端可连接到shopify以访问您的产品、库存、价格等。因此,当您创建客户机时,您可以执行client.fetchProduct(125871)或client.fetchAllproducts,它返回一个包含所有产品的数组,每个数组对象都有id、product\u id、variant\u id和weight。因此,在调试过程中,我编写了console.log(cart.lineItem.variant_id)如何通过控制台请求,我尝试了client.cart.lineItem.variant_id,但是是的..我猜您希望从控制台访问所有内容中的局部变量(对象)。。。您只需要在外部(在全局范围内)声明这些变量。您可以将您想要访问的任何内容声明为全局变量,以便进行测试。只是不要在函数中重新实例化它。使用带有断点的google chrome devtool:
    $(function(){
      var cart = {};
      window.cart = cart;
    })
    
    $(function() { 
      //EVERYTHING
      ...
    
      window.Ireply = window.Ireply || {};
      window.Ireply.object = object;
      ...
    });
    
    console.log(Ireply.object); // some object