API расширения Chrome contentSettings.javascript «блокировать» с помощью <all_urls> переопределяет разрешения, специфичнJavascript

Форум по Javascript
Ответить
Anonymous
 API расширения Chrome contentSettings.javascript «блокировать» с помощью <all_urls> переопределяет разрешения, специфичн

Сообщение Anonymous »

Я пишу расширение для Chrome, которое одним щелчком мыши переключает JavaScript для браузера (все страницы), но я хочу, чтобы те сайты, которые я внес в белый список, по-прежнему имели разрешения JS. Судя по документам Chrome Extension API, настройка «блокировать» в chrome.contentSettings.javascript не должна переопределять список разрешений для конкретного сайта, который я вручную ввел в настройках JS Chrome.
Я неправильно читаю API? Всегда ли расширение переопределяет белый список?
Подробнее:

Код: Выделить всё

const { setting } = await chrome.contentSettings.javascript.get({ primaryUrl: 'http://*/*' });
const newSetting = setting === 'allow' ? 'block' : 'allow';

chrome.contentSettings.javascript.set({
primaryPattern: '',
setting: newSetting
});
Этот код работает отлично, но когда для параметра установлено значение «блокировать», он блокирует запуск всего javascript, даже тех сайтов, для которых у меня есть белый список в chrome://settings/content/javascript, например:
Изображение

Полный код расширения:

Код: Выделить всё

chrome.runtime.onInstalled.addListener(() => {
console.log('JS Toggle extension installed');
updateIcon();
});

// Update icon based on current JavaScript setting
async function updateIcon() {
const { setting } = await chrome.contentSettings.javascript.get({ primaryUrl: 'http://*/*' });
const enabled = setting === 'allow';

chrome.action.setTitle({
title: `JavaScript ${enabled ? 'ON' : 'OFF'} - Click to toggle`
});

chrome.action.setBadgeText({
text: enabled ? 'ON' : 'OFF'
});

chrome.action.setBadgeBackgroundColor({
color: enabled ? '#4CAF50' : '#F44336'
});
}

// Toggle JavaScript on icon click
chrome.action.onClicked.addListener(async () => {
const { setting } = await chrome.contentSettings.javascript.get({ primaryUrl: 'http://*/*' });
const newSetting = setting === 'allow' ? 'block' : 'allow';

await chrome.contentSettings.javascript.set({
primaryPattern: '',
setting: newSetting
});

updateIcon();
});
Я пробовал изменить на http*://*/* и другие варианты, но безрезультатно. Я не хочу вдаваться в запрет JS для конкретного сайта, но это может быть решением, если ничего не поможет.


Подробнее здесь: https://stackoverflow.com/questions/797 ... s-override
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»