Cur*_*ice 4 javascript google-chrome-extension
我正在尝试构建一个 chrome 扩展;在这方面的经验很少。我按照使用内容脚本将代码插入到页面上下文中,使用第一种方法将 js 代码注入到页面中。
我正在尝试在其他人的代码上构建一个js框架,该框架严重依赖于警报,这些警报破坏了我的覆盖层的功能,所以我只想让它们安静一下——实际上,我宁愿将消息传递到控制台.log 但我会采取我在这个阶段能得到的东西。因此,我尝试遵循JavaScript:重写alert()来设置要注入的最终js文件(nogo.js)。
nogo.js 被注入,但它似乎没有抑制警报的效果。难道是因为另一个 html 文件本身是由另一个 js 文件启动的,所以注入发生得太慢或无序?
清单.json
"content_scripts": [
{
"matches": ["*://URL/*"],
"js": ["myscript.js"],
"run_at": "document_end",
"all_frames": true
},
{
"matches": ["*://URL/*"],
"js": ["noalerts.js"],
"run_at": "document_start",
"all_frames": true
}
],
"web_accessible_resources": ["script.js","nogo.js"]
}
Run Code Online (Sandbox Code Playgroud)
myscript.js
var s = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
s.src = chrome.extension.getURL('script.js');
s.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)
noalerts.js
var n = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
n.src = chrome.extension.getURL('nogo.js');
n.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(n);
Run Code Online (Sandbox Code Playgroud)
nogo.js
window.alert = null;
Run Code Online (Sandbox Code Playgroud)
小智 5
要不alert执行任何操作,只需粘贴以下行即可覆盖它:
var s = document.createElement('script');
s.innerHTML = "alert = function(){}"
document.body.appendChild(s);
Run Code Online (Sandbox Code Playgroud)
该函数将与您的函数体一起重新声明。我必须在我的扩展中做类似的事情。
通过类比,你可以让confirm函数每次都说“是”:
var s = document.createElement('script');
s.innerHTML = "confirm= function(){return true;}"
document.body.appendChild(s);
Run Code Online (Sandbox Code Playgroud)
这可以用于最简单的情况。例如,没有其他人在页面上执行任何其他操作,等等。
注意:您可以通过将代码粘贴到控制台并尝试调用来尝试此方法alert。
注意2:代码可以在您的内容脚本中执行,因为它在其脚本和您的内容脚本之间共享文档。
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |