Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript &引用;TypeError:无法读取属性';查询';“未定义”的定义;对于背景页中的chrome.tab.query_Javascript_Jquery_Google Chrome Extension_Tabs_Google Chrome Devtools - Fatal编程技术网

Javascript &引用;TypeError:无法读取属性';查询';“未定义”的定义;对于背景页中的chrome.tab.query

Javascript &引用;TypeError:无法读取属性';查询';“未定义”的定义;对于背景页中的chrome.tab.query,javascript,jquery,google-chrome-extension,tabs,google-chrome-devtools,Javascript,Jquery,Google Chrome Extension,Tabs,Google Chrome Devtools,我正在使用此代码获取所有打开的选项卡URL: function setPhone(phone) { chrome.tabs.query({ }, function (tabs) { var tabURL = tabs[0].url; console.log(tabURL); }); } 这是开始侦听TCP套接字的扩展的一部分。当建立连接并收到命令时,将调用设置电话功能。在以下事件中调用该函数: function onAcceptCallb

我正在使用此代码获取所有打开的选项卡URL:

function setPhone(phone) {
    chrome.tabs.query({
    }, function (tabs) {
        var tabURL = tabs[0].url;
        console.log(tabURL);
    });
}
这是开始侦听TCP套接字的扩展的一部分。当建立连接并收到命令时,将调用设置电话功能。在以下事件中调用该函数:

function onAcceptCallback(tcpConnection, socketInfo) {
    var info = "[" + socketInfo.peerAddress + ":" + socketInfo.peerPort + "] Connection accepted!";
    log.output(info);
    console.log(socketInfo);
    tcpConnection.addDataReceivedListener(function (data) {
        var lines = data.split(/[\n\r]+/);
        for (var i = 0; i < lines.length; i++) {
            var line = lines[i];
            if (line.length > 0) {
                var info = "[" + socketInfo.peerAddress + ":" + socketInfo.peerPort + "] " + line;
                log.output(info);

                var cmd = line.split(/\s+/);
                try {
                    switch (cmd[0]) {
                        case 'Phone':
                            setPhone(cmd[1]);
                            tcpConnection.sendMessage('+OK-Phone');
                            break;
                        case 'SetClientPage':
                            clientEditPage = cmd[1];
                            tcpConnection.sendMessage('+OK-SetClientPage');
                            break;
                        case 'SetSearchPage':
                            clientSearchPage = cmd[1];
                            tcpConnection.sendMessage('+OK-SetSearchPage');
                            break;
                        default:
                            tcpConnection.sendMessage('+ERR-Comando No Encontrado');
                    }
                    //tcpConnection.sendMessage(Commands.run(cmd[0], cmd.slice(1)));
                } catch (ex) {
                    tcpConnection.sendMessage(ex);
                }
            }
        }
    });
};
以上所有操作都会产生错误:TypeError:无法读取未定义的属性“query”

编辑:

为了进行测试,我在扩展启动时放置了查询方法,并且出现了相同的错误:

chrome.app.runtime.onLaunched.addListener(function () {

    chrome.tabs.query({
    }, function (tabs) {
        var tabURL = tabs[0].url;
        console.log(tabURL);
    });


    console.log('Aplicación iniciada.');
    startServer('127.0.0.1', 8888);
});
需要帮忙吗? 干杯
Jaime

您正在编写一个chrome应用程序,但是
chrome.tabs.*
api只能通过chrome扩展访问。这就是你出错的原因。

你正在编写一个chrome应用程序,但是
chrome.tabs.*
api只能通过chrome扩展访问。这就是为什么会出现错误。

外部是什么意思?你提供的链接没有解决问题。你所说的外部链接是什么意思?你提供的链接没有解决问题。据我所知,这是一个chrome扩展。事实上,我使用chrome extension manager安装它。你为什么说这是一个chrome应用程序?@jstuardo,看看你的清单文件,应用程序和套接字都是chrome应用程序的术语。但是背景页面是在app元素下定义的,所有关于创建chrome扩展名的教程都显示清单文件应该具有这种结构。我需要做的是一个从其他应用程序接收数据的扩展,并根据接收到的数据用一个标签做一些事情。我不相信你。没有使用
app
key的扩展教程。看,你完全正确。事实上,我在VisualStudio中使用了一个Chrome扩展模板,它将“app”键添加到清单中。但我现在有另一个问题,谷歌扩展不允许套接字。是否可以将Chrome扩展与外部Windows应用程序进行通信?据我所知,这是Chrome扩展。事实上,我使用chrome extension manager安装它。你为什么说这是一个chrome应用程序?@jstuardo,看看你的清单文件,应用程序和套接字都是chrome应用程序的术语。但是背景页面是在app元素下定义的,所有关于创建chrome扩展名的教程都显示清单文件应该具有这种结构。我需要做的是一个从其他应用程序接收数据的扩展,并根据接收到的数据用一个标签做一些事情。我不相信你。没有使用
app
key的扩展教程。看,你完全正确。事实上,我在VisualStudio中使用了一个Chrome扩展模板,它将“app”键添加到清单中。但我现在有另一个问题,谷歌扩展不允许套接字。是否可以将Chrome扩展与外部Windows应用程序进行通信?
chrome.app.runtime.onLaunched.addListener(function () {

    chrome.tabs.query({
    }, function (tabs) {
        var tabURL = tabs[0].url;
        console.log(tabURL);
    });


    console.log('Aplicación iniciada.');
    startServer('127.0.0.1', 8888);
});