Javascript 如何从chrome扩展触发特定网站上的功能?
最近开始使用Chrome扩展。 我正在试图弄清楚如何才能在特定网站上执行功能 例如,我只想显示堆栈溢出的警报框。我使用Chrome的声明性内容API来匹配主机 对于这个问题,我还没有找到类似的问题 我的manifest.json文件正在后台运行以下代码块Javascript 如何从chrome扩展触发特定网站上的功能?,javascript,google-chrome,google-chrome-extension,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Extension,Google Chrome Devtools,最近开始使用Chrome扩展。 我正在试图弄清楚如何才能在特定网站上执行功能 例如,我只想显示堆栈溢出的警报框。我使用Chrome的声明性内容API来匹配主机 对于这个问题,我还没有找到类似的问题 我的manifest.json文件正在后台运行以下代码块 'use strict'; chrome.runtime.onInstalled.addListener(function() { chrome.declarativeContent.onPageChanged.removeRules(und
'use strict';
chrome.runtime.onInstalled.addListener(function() {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {
hostEquals: 'stackoverflow.com'
}
})
],
actions: [new chrome.declarativeContent.SOOnlyFunction()]
}]);
});
});
function SOOnlyFunction()
{
alert('On SO');
}
您可以使用Chrome API实现此行为:
"permissions": [ "activeTab","tabs","notifications" ],
"background": {
"scripts": ["background.js"],
"persistent": false
}
下面是我的background.js的样子
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
if(changeInfo.url != null){
console.log("onUpdated." + " url is "+changeInfo.url);
// creates Notification.
showNotification();
}
});
function showNotification() {
chrome.notifications.create( {
iconUrl: chrome.runtime.getURL('img/logo128.png'),
title: 'Removal required',
type: 'basic',
message: 'URL is',
buttons: [{ title: 'Learn More' }],
isClickable: true,
priority: 2,
}, function() {});
}
它是不完整的,但你会明白的。除了内置的动作之外,你不能用它做任何事情
它目前是专门的ShowPageAction
,SetIcon
和RequestContentScript
(仍处于实验阶段)
无法轻松扩展的原因是,declarativeContent
是在本机代码中实现的,作为JavaScript事件处理程序的更有效的替代方案
总的来说,Chrome开发者将其视为一个雄心勃勃但基本上不可行的/未开发的/废弃的想法,命运与之类似
有关使用上述JS处理程序的实现思想,请参阅 或者,您仍然可以通过使用仅在预定义域上激活的内容脚本(只要您事先知道该域是一个常量),将其设置为“声明性”。然后他们可以自己做一些事情或者做一些事情
最后,如果您的目标是重定向/阻止请求,那么您需要查看的就是它。Oh boy!突然间,最后一句话并没有让我感觉很好。你建议我选择Chrome标签吗?不过,我听说它会让我的公羊窒息。但同样,过早优化是万恶之源。对于您所描述的,最好的办法是在清单中声明一个内容脚本,并从中触发您的逻辑(如果您需要后台页面执行某些操作,则可能使用消息传递)。与尝试收听
标签相比,它产生的噪音要小得多。更新的需要更少的权限(阅读URL需要可怕的“标签”
),太棒了。我会继续的。