【发布时间】:2022-09-25 03:43:59
【问题描述】:
我需要在导航时获取 chrome 选项卡的 url,但在用户从使用 declarativeNetRequest 设置的规则重定向之前。
目前用户可以使用上下文菜单添加规则,当尝试访问被过滤的主机时,它将被重定向到内部扩展页面。
chrome.contextMenus.onClicked.addListener( ( clickData) => {
switch (clickData.menuItemId) {
case \'blockHost\':
blockHost(clickData)
console.log(\'Added host\')
break;
case \'unblockHost\':
unblockHost(clickData)
chrome.declarativeNetRequest.getDynamicRules( rules => console.log(rules) )
console.log(\'Removed host\')
break;
}
})
const blockHost = async (clickData) => {
let hostname = new URL(clickData.pageUrl).hostname
console.log(hostname)
let rules = await chrome.declarativeNetRequest.getDynamicRules()
console.log(rules.length, rules)
let newRule = await chrome.declarativeNetRequest.updateDynamicRules({
addRules: [{
id: rules.length + 1,
action: {type: \'redirect\', redirect: {extensionPath: \'/forbidden.html\'}},
condition: {urlFilter: `${hostname}/`, resourceTypes: [\'main_frame\', \'sub_frame\']}
}]
});
console.log(newRule)
let updatedRules = await chrome.declarativeNetRequest.getDynamicRules()
console.log(\'blockedhost executed\', updatedRules)
}
由于用户被重定向,我目前无法删除某个 url。我的想法是在重定向发生之前获取 url,但我该怎么做呢?
标签: javascript vue.js chrome-extension-manifest-v3 chrome-declarativenetrequest