Extension:Chrome.tabs.query 不适用于 'url'
Extension:Chrome.tabs.query does not work with 'url'
我的扩展是在另一个页面上点击按钮。
我不知道为什么代码不起作用。
函数不点击项目'ac_play'
清单
{
"manifest_version": 2,
"name": "VkPlayer", // Название расширения
"version": "1.0", // Номер версии
"description": "Switching music in the VK with the keyboard", // Описание расширения
"permissions": [
"tabs",
"*://vk.com/audios*"
],
"background": {
"scripts": ["index.js"]
},
"browser_action": {
"default_title": "VKPlayer", // Название кнопки
"default_icon": "1.png", // Иконка для кнопки
"default_popup": "popup.html" // Всплывающее окно
}
}
popup.html
<script src="index.js"></script>
<style>body{
background: #2f4d9a;
width: 0;
height:0;
}</style>
index.js
function (tab) {
chrome.tabs.query({'active': true},{'url':"http://vk.com/audio*"},function (tabs){
console.log(tabs);
chrome.tabs.executeScript(tabs[0].id, {code : "document.getElementById('ac_play').onclick();"});
})
}();
此代码我的网站:
<div id="ac_controls" class="fl_l">
<div id="ac_play" class="fl_l"></div>
<div class="next_prev fl_l">
<div id="ac_prev" class="ctrl_wrap">
<div class="prev ctrl"></div>
</div>
<div id="ac_next" class="ctrl_wrap">
<div class="next ctrl"></div>
</div>
</div>
</div>
chrome.tabs.query(
{'active': true}, {'url':"http://vk.com/audio*"},
function (tabs){/*...*/}
)
是无效查询。我不知道逻辑应该是什么,但是..
- 如果你想在这些条件之间进行 AND,则需要同时对它们进行查询:
{'active': true, 'url': "http://vk.com/audio*"}
如果您希望在这些条件之间进行“或”操作,则需要先查询一个,然后手动过滤另一个。
chrome.tabs.query(
{'url':"http://vk.com/audio*"},
function (tabs) {
tabs.forEach(function(tab) {
if(tab.active) {
/* ... */
}
});
}
});
很可能这不是您的代码的唯一问题,但不幸的是您未能用英语解释您的需要。 ru.SO 可能更适合您的需求。
除了已接受的答案:我必须向我的清单添加“制表符”权限才能使“url”查询正常工作。
我的扩展是在另一个页面上点击按钮。 我不知道为什么代码不起作用。 函数不点击项目'ac_play'
清单
{
"manifest_version": 2,
"name": "VkPlayer", // Название расширения
"version": "1.0", // Номер версии
"description": "Switching music in the VK with the keyboard", // Описание расширения
"permissions": [
"tabs",
"*://vk.com/audios*"
],
"background": {
"scripts": ["index.js"]
},
"browser_action": {
"default_title": "VKPlayer", // Название кнопки
"default_icon": "1.png", // Иконка для кнопки
"default_popup": "popup.html" // Всплывающее окно
}
}
popup.html
<script src="index.js"></script>
<style>body{
background: #2f4d9a;
width: 0;
height:0;
}</style>
index.js
function (tab) {
chrome.tabs.query({'active': true},{'url':"http://vk.com/audio*"},function (tabs){
console.log(tabs);
chrome.tabs.executeScript(tabs[0].id, {code : "document.getElementById('ac_play').onclick();"});
})
}();
此代码我的网站:
<div id="ac_controls" class="fl_l">
<div id="ac_play" class="fl_l"></div>
<div class="next_prev fl_l">
<div id="ac_prev" class="ctrl_wrap">
<div class="prev ctrl"></div>
</div>
<div id="ac_next" class="ctrl_wrap">
<div class="next ctrl"></div>
</div>
</div>
</div>
chrome.tabs.query(
{'active': true}, {'url':"http://vk.com/audio*"},
function (tabs){/*...*/}
)
是无效查询。我不知道逻辑应该是什么,但是..
- 如果你想在这些条件之间进行 AND,则需要同时对它们进行查询:
{'active': true, 'url': "http://vk.com/audio*"}
如果您希望在这些条件之间进行“或”操作,则需要先查询一个,然后手动过滤另一个。
chrome.tabs.query( {'url':"http://vk.com/audio*"}, function (tabs) { tabs.forEach(function(tab) { if(tab.active) { /* ... */ } }); } });
很可能这不是您的代码的唯一问题,但不幸的是您未能用英语解释您的需要。 ru.SO 可能更适合您的需求。
除了已接受的答案:我必须向我的清单添加“制表符”权限才能使“url”查询正常工作。