Chrome扩展程序 - 在执行前修改脚本

时间:2015-07-20 17:12:06

标签: javascript google-chrome google-chrome-extension

我对这个Chrome扩展程序有点新手,我试图在脚本执行之前修改脚本。

示例:

<script type="text/javascript">
    function() {
        var count = 10;
        countDown = setInterval(function() {
            if(count == 0) {
                // do Stuff
            }
            count--;
        }, 1000);
    }
</script>

我的目标是从站点中删除此脚本(在执行之前)并注入我自己的脚本(我已经完成了注入部分)或修改它(例如将set count设置为20,因此需要20秒)。

我已经尝试了很多东西,但我找不到好办法。

希望你能帮助我:)。

1 个答案:

答案 0 :(得分:2)

在飞行中劫持那个部分会非常困难,但至少你可以停止计时器。

您需要做的就是致电

clearInterval(countDown);

..在正确的背景下。

此时extension architectureisolated 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);