我对这个Chrome扩展程序有点新手,我试图在脚本执行之前修改脚本。
示例:
<script type="text/javascript">
function() {
var count = 10;
countDown = setInterval(function() {
if(count == 0) {
// do Stuff
}
count--;
}, 1000);
}
</script>
我的目标是从站点中删除此脚本(在执行之前)并注入我自己的脚本(我已经完成了注入部分)或修改它(例如将set count设置为20,因此需要20秒)。
我已经尝试了很多东西,但我找不到好办法。
希望你能帮助我:)。
答案 0 :(得分:2)
在飞行中劫持那个部分会非常困难,但至少你可以停止计时器。
您需要做的就是致电
clearInterval(countDown);
..在正确的背景下。
此时extension architecture和isolated worlds的概念开始发挥作用。
可以与网页交互的扩展程序的唯一部分是内容脚本。但是,内容脚本生活在一个单独的环境中:
内容脚本在称为孤立世界的特殊环境中执行。他们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。它将每个内容脚本视为在其运行的页面上没有执行其他JavaScript。反过来也是如此:页面上运行的JavaScript无法调用任何函数或访问内容脚本定义的任何变量。
但您需要访问该网页的JavaScript。有一种方法,injecting your code into the page as a <script>
tag:
var script = document.createElement('script');
script.textContent = "clearInterval(countDown);";
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);