找到网页上的短语后,禁用所有选项卡。Chrome扩展,Javascript
我正在尝试编写谷歌扩展。问题是,当脚本查找短语时,我想在tab/all选项卡中静音/关闭声音 例如: 你点击Youtube上的随机视频。 当描述中的“许可证授予YouTube”时,则禁用此选项卡 而且,当我第一次访问某个页面时,它也不起作用。我必须重新加载它( 第四天学习编程找到网页上的短语后,禁用所有选项卡。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); });
//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是一个水疗网站,请看《谢谢你的建议》,我们将尝试更多这些新信息。