我需要阻止写入LocalStorage。所以当调用函数localstorage.setItem()
时,我需要改变它的行为或阻塞。我在清单的"content_scripts"
中有我的content.js
这里有可能的方法(我找不到所有的东西):
1)存储更改的事件处理程序
我试过了
window.addEventListener('storage', function (event) {
console.log("storage event occured here");
});
但我需要在同一个标签中检测函数调用(通过扩展名)。
2)覆盖系统功能localstorage.setItem()
如果我将在控制台中写,它的工作原理
localStorage.setItem = function(){
console.log('modified');
}
但不是如果在content.js中
还试图为content_scripts添加清单"run_at" : "document_start"
3)setItem函数调用的事件处理程序
是否可以为自定义函数调用设置触发器/处理程序?我知道像click,mouseover这样的处理程序..但是在函数调用上 - 不是。
答案是通过内容脚本注入脚本文件。感谢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()');
}