找到网页上的短语后,禁用所有选项卡。Chrome扩展,Javascript

找到网页上的短语后,禁用所有选项卡。Chrome扩展,Javascript,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试编写谷歌扩展。问题是,当脚本查找短语时,我想在tab/all选项卡中静音/关闭声音 例如: 你点击Youtube上的随机视频。 当描述中的“许可证授予YouTube”时,则禁用此选项卡 而且,当我第一次访问某个页面时,它也不起作用。我必须重新加载它( 第四天学习编程 //smh可以关闭所有标签的声音-有时可以工作 功能关闭声音(){ chrome.tabs.query({url:[]},函数(tabs){ 对于(变量i=0;i{ 警报(response.message); });

我正在尝试编写谷歌扩展。问题是,当脚本查找短语时,我想在tab/all选项卡中静音/关闭声音

例如: 你点击Youtube上的随机视频。 当描述中的“许可证授予YouTube”时,则禁用此选项卡

而且,当我第一次访问某个页面时,它也不起作用。我必须重新加载它( 第四天学习编程

//smh可以关闭所有标签的声音-有时可以工作
功能关闭声音(){
chrome.tabs.query({url:[]},函数(tabs){
对于(变量i=0;i
{
“清单版本”:2,
“名称”:“查找短语时禁用选项卡”,
“版本”:“0.0.1”,
“内容脚本”:[{
“js”:[“script.js”],
“匹配项”:[“*://*/*”],
“运行时间”:“文档结束”
} ],
“权限”:[
“上下文菜单”,
“标签”,
“活动标签”,
“存储”,
"http://www.google.com/",
"https://ajax.googleapis.com/"], 
} 
}

我们正在运行Chrome扩展!
授予YouTube的许可证

我做了一项研究,成功地做到了这一点,但它开始得太快了,以至于在页面加载之前,它在previus页面上找到了一个单词。我已经创建了三天了,如果有人能让它工作,即使是不同的方式,我也会感谢它

我今天也发现了这一点:

search.query(queryInfo: QueryInfo, callback: function);
所以可以只在background.js中编写它,但我不知道如何使它工作

//manidest.json
      { 
        "name": "Learning",
        "manifest_version": 2,
        "version": "2", 
        "description": "Mute tabs, when Licence is on page", 
        
        "permissions": [
            "tabs", 
            "storage",
            "activeTab",
            "search",
            "*://*/*"
        ],  
        "content_scripts": [{
            "js": ["contentScript.js"],      
            "matches": ["*://*/*"]
        }],
        "background": {
            "persistent": true,
            "scripts": ["background.js"]      
        } 
        
    } 
    

//contentScript.js

    //contentScript.js
    //wait until for url change
    chrome.runtime.onMessage.addListener(
        function(request, sender, sendResponse) {
            if (request.message === 'URL reloaded') {
                //text finder
                var xpathResult = document.evaluate("(//text()[contains(., 'Licence')])[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
                var node=xpathResult.singleNodeValue;            
                if (node==null){ //text not found
                    chrome.runtime.sendMessage({message: "Not found"}, (response) => {
                        alert(response.message);
                    });            
                }else{ //text found
                    chrome.runtime.sendMessage({message: "Found it"}, (response) => {
                        alert(response.message);
                    });
                };
            } 
        }
    );  

//background.js
          //React on url change
      chrome.tabs.onUpdated.addListener(
        function(tabId, changeInfo, tab) {
          if (changeInfo.url) {
            chrome.tabs.sendMessage( tabId, {
              message: 'URL reloaded',
              url: changeInfo.url
            })          
          }          
        }
      );

      //React, when is smh found by contentScript.js or not
      chrome.runtime.onMessage.addListener(
        (request, sender, sendResponse) => {
          //If text is found
          if (request.message === "Found it"){
            //turn off sound
            chrome.tabs.query({url: []}, function (tabs) {
              for (var i = 0; i < tabs.length; i++) {
                var mutedInfo = tabs[i].mutedInfo;
                if (mutedInfo) {
                  chrome.tabs.update(tabs[i].id, {"muted": true});
                }
              }
            });
            sendResponse({message: "I found it, turning off sound."});
            //If text not found
          }else if (request.message === "Not found"){  
            //turn on sound
            chrome.tabs.query({url: []}, function (tabs) {
              for (var i = 0; i < tabs.length; i++) {
                var mutedInfo = tabs[i].mutedInfo;
                if (mutedInfo) {
                  chrome.tabs.update(tabs[i].id, {"muted": false});
                }
              }
            });
            sendResponse({message: "Not found, turning on sound."});
          }
        }
      );
//manidest.json
{ 
“名称”:“学习”,
“清单版本”:2,
“版本”:“2”,
“说明”:“当许可证在第页时,静音选项卡”,
“权限”:[
“标签”,
“存储”,
“活动标签”,
“搜索”,
"*://*/*"
],  
“内容脚本”:[{
“js”:[“contentScript.js”],
“匹配项”:[“*://*/*”]
}],
“背景”:{
“执着”:对,
“脚本”:[“background.js”]
} 
} 
//contentScript.js
//contentScript.js
//等待url更改
chrome.runtime.onMessage.addListener(
功能(请求、发送方、发送响应){
if(request.message==='URL重载'){
//文本查找器
var xpathResult=document.evaluate((//text()[包含(,'license')])[1]”,document,null,xpathResult.FIRST\u ORDERED\u NODE\u TYPE,null);
var node=xpathResult.singleNodeValue;
如果(node==null){//找不到文本
chrome.runtime.sendMessage({message:“未找到”},(响应)=>{
警报(response.message);
});            
}else{//找到文本
chrome.runtime.sendMessage({message:“找到它”},(响应)=>{
警报(response.message);
});
};
} 
}
);  
//background.js
//对url更改作出反应
chrome.tabs.onUpdated.addListener(
函数(tabId、changeInfo、tab){
if(changeInfo.url){
chrome.tabs.sendMessage(tabId{
消息:“URL已重新加载”,
url:changeInfo.url
})          
}          
}
);
//反应,contentScript.js是否找到smh
chrome.runtime.onMessage.addListener(
(请求、发送方、发送响应)=>{
//如果找到文本
if(request.message==“找到了”){
//关掉声音
chrome.tabs.query({url:[]},函数(tabs){
对于(变量i=0;i
1)内容脚本无法使用chrome.tabs API,因此您需要使用onMessage listener声明背景脚本,并在找到文本时从内容脚本发送消息,以便背景脚本将选项卡静音,请参阅。2) Youtube是一个水疗网站,请看《谢谢你的建议》,我们将尝试更多这些新信息。