У меня есть chrome расширение.
То, что я хочу, это:
Когда на странице щелкают тег <a>
(с именем A), я использую chrome.webRequest.onBeforeRequest
, чтобы заблокировать запрос.
Вопрос:
Я пробовал и {redirectUrl: 'javascript:'}
, и {cancel: true}
, но страница А все еще перенаправлена.
Как я могу предотвратить перенаправление в chrome расширении.
манифест. json:
{
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "img/19.png",
"default_popup": "popup.html",
"default_title": "test"
},
"icons": {
"128": "img/128.png",
"48": "img/48.png"
},
"is_account_related": false,
"manifest_version": 2,
"minimum_chrome_version": "38.0.0.0",
"permissions": ["webRequest", "webRequestBlocking", "notifications", "tabs", "storage", "cookies", "http://*/*", "https://*/*", "*://*/*"],
"homepage_url": "xxxx",
"name": "test",
"description": "test",
"version": "10.3.6",
"content_security_policy": "script-src 'self' 'unsafe-eval' xxx 'unsafe-inline'; object-src 'self'",
"key": "xxx"
}
background. html
chrome.webRequest.onBeforeRequest.addListener(
function (details) {
console.log('========start============');
console.log('block', details, details.url);
console.log('========end============');
// return { redirectUrl: 'javascript:' };
return { cancel: true };
},
{ urls: ["*://developer.mozilla.org/*"] },
['blocking']
);
В фоновом режиме. html, журнал правильный. Но страница все еще перемещается
=== update
Я считаю, что страница использует history
API для навигации. Так есть ли способ предотвратить history
API, как history.push
, history.replace
?