Dre*_*eur 13 javascript alert google-chrome google-chrome-extension
我可以创建Google Chrome扩展程序来阻止该网页执行此操作alert()吗?
Moh*_*our 16
是的,你可以,alert()只是一个JavaScript方法,你可以通过这样做来覆盖它的功能.
window.alert = function alert(msg) {
console.log('Hidden Alert ' + msg);
};
Run Code Online (Sandbox Code Playgroud)
只需记住通过run_at清单内容脚本修饰符在清单中的document_start运行该内容脚本.
我相信有一个扩展只是这样做.开发人员将其命名为Nice Alert. https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk
Dan*_*ler 12
正如@MrGlass所说,目前,Chrome Extensions在一个单独的环境中运行,限制了对实际window对象的访问,并提供了仅对扩展有效的副本.
为了解决这个问题,我们可以将脚本元素直接注入到文档中.这样,您可以访问文档的环境和真实window对象.
首先,让我们创建一个函数(我也添加了"确认",因为有些确认很烦我):
var disablerFunction = function () {
window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); };
window.confirm = function confirm(msg) {
console.log("Hidden Confirm " + msg);
return true; /*simulates user clicking yes*/
};
};
Run Code Online (Sandbox Code Playgroud)
现在,我们要做的是在文本脚本中转换该函数并将其括在括号中(以避免与页面环境中的实际变量发生冲突):
var disablerCode = "(" + disablerFunction.toString() + ")();";
Run Code Online (Sandbox Code Playgroud)
最后,我们注入一个脚本元素,并立即删除它:
var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;
document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10770 次 |
| 最近记录: |