根据此SO答案,filtering URLs与hostSuffix
的页面活动How to show Chrome Extension on certain domains? https://developer.chrome.com/extensions/match_patterns
var onWebNav = function(details){ if (details.frameId === 0) chrome.pageAction.show(details.tabId); };
var filter = { url: [{ hostSuffix: "reddit.com" }] };
chrome.webNavigation.onCommitted.addListener(onWebNav, filter);
chrome.webNavigation.onHistoryStateUpdated.addListener(onWebNav, filter);
但如果我想要一个模式,例如http://*.reddit.com/r/*/comments/*
,我应该使用schemes
代替hostSuffix
,对吗?根据{{3}},这应该符合所有要求:
var filter = { url: [{ schemes: ["http://*/*"] }] };
但即使此网址http://www.reddit.com/r/IAmA/comments/z1c9z/
也不匹配。
我是否以错误的方式使用schemes
过滤器?
答案 0 :(得分:0)
我认为这不是一个有效的计划。一个方案是标识所使用的协议的方法,它不应该有任何通配符。
match_patterns链接描述了一个完全构建模式,由3个部分组成,包括一个方案。这是与您尝试使用的系统不同的系统,该系统基于matching different parts of an URL separately。模式链接确实为您提供有关有效方案的信息,在基本语法表中:
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
请尝试使用var filter = { url: [{ schemes: ["http"] }] };
。这应该匹配通过普通旧HTTP的任何URL。
要实现所需的匹配,最好的方法是使用originAndPathMatches
或urlMatches
过滤器,因为您需要正则表达式来匹配主机和路径的特定语法。 / p>