我正在构建chrome扩展程序,并且正在运行以下脚本:

var group = {
        'object1': {
            option1: '',
            option2: ''
        },
        'object2': {
            option1: '',
            option2: ''
        }
    };

chrome.tabs.executeScript({
    code: " \
        var group_array = [" + Object.keys(group) + "]; \
        console.log(group_array[0]); \
    "
});


由于某些原因,console.log返回未定义的object1。我希望console.log返回group中第一个对象的名称,因此它应该返回object1

我究竟做错了什么?

最佳答案

我只是测试一下。问题是:

"["+['object1','object2']+"]" -> "[object1,object2]"


所以

var group_array = [object1, object2];


而且,如果直接评估字符串,则object1和object2将被视为变量而不是字符串,并且由于没有名为object1和object2的变量,因此评估失败。

要实现所需的功能,可以循环Object.keys(group)的数组,并将键一个接一个地追加到代码中,也可以直接使用JSON.stringify将结果解析为字符串数组:

" \
    var group_array = " + JSON.stringify(Object.keys(group)) + "; \
    console.log(group_array[0]); \
"

关于javascript - Chrome扩展循环通过javascript对象无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30632766/

10-11 08:23