Изменить или заблокировать содержимое функции JS с расширением Chrome - PullRequest
0 голосов
/ 11 марта 2019

Мне нужно заблокировать запись в LocalStorage.Поэтому, когда вызывается функция localstorage.setItem(), мне нужно изменить ее поведение или блок.У меня есть мои content.js в "content_scripts" манифеста

Вот возможные пути (я не могу найти что-либо на всех из них):

1) Обработчик событий хранилищаизменить

Я пробовал

window.addEventListener('storage', function (event) {
    console.log("storage event occured here");
});

Но мне нужно обнаружение вызова функции в той же вкладке (через расширение).

2) Переопределить системную функцию localstorage.setItem()

Это работает, если я напишу в консоли

localStorage.setItem = function(){
    console.log('modified');
  }

Но не if в content.js

Также пытался добавить в манифест "run_at" : "document_start" для content_scripts

3) Обработчик события вызова функции setItem

Isможно установить триггер / обработчик для вызова пользовательской функции?Я знаю обработчики, такие как щелчок, наведение мыши ... но при вызове функций - нет.

1 Ответ

0 голосов
/ 12 марта 2019

Ответ заключается в том, чтобы внедрить файл скрипта через содержимое скрипта. Благодаря wOxxOm

content.js

var inj = document.createElement('script');
inj.src = chrome.runtime.getURL('blockaccess.js');
inj.onload = function() {
    this.remove();
};
(document.head || document.documentElement).appendChild(inj);

blockaccess.js

Storage.setItem = localStorage.setItem = sessionStorage.setItem = function(){
  console.log('Blocked Storage setItem()');
}
...