扩展程序:Chrome.tabs.query不适用于' url'

时间:2015-04-21 13:37:46

标签: javascript api google-chrome google-chrome-extension

我的扩展程序是另一页上的点击按钮。 我不知道为什么代码不起作用。     该功能不会点击'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>

1 个答案:

答案 0 :(得分:0)

chrome.tabs.query(
  {'active': true}, {'url':"http://vk.com/audio*"},
  function (tabs){/*...*/}
)

是无效的查询。我不知道逻辑应该是什么,但是......

  1. 如果您希望在这些条件之间使用AND,则需要对它们进行查询:{'active': true, 'url': "http://vk.com/audio*"}
  2. 如果你想在这些条件之间进行OR,你需要查询一个,然后手动过滤另一个。

    chrome.tabs.query(
      {'url':"http://vk.com/audio*"},
      function (tabs) {
        tabs.forEach(function(tab) {
          if(tab.active) {
            /* ... */
          }
        });
      }
    });
    
  3. 很可能这不是您的代码唯一的问题,但遗憾的是您无法用英语解释您需要什么。 ru.SO可能更适合您的需求。