【问题标题】:Chrome extensions - modify script before executionChrome 扩展 - 在执行前修改脚本
【发布时间】:2015-07-20 17:12:05
【问题描述】:

我对这个 chrome-extensions 的东西有点陌生,我正在尝试在脚本执行之前对其进行修改。

例子:

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

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

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

希望你能帮助我:)

【问题讨论】:

  • 使用 getElementsByTagName 获取所有脚本并检查哪个是正确的(有效),然后使用 .parentNode.removeChild 将其删除。
  • 你能把count作为函数的参数传递吗?
  • 脚本在 HTML 页面内,我不知道我可以这样做,如果它立即执行(我的 javascript 知识也有点有限)最好的办法是停止脚本从执行,然后我可以只使用我自己的脚本
  • 它是你的 HTML 脚本吗,因为你可以使用 Notepad++ 或括号
  • 不,脚本在网站上,当我加载该网站时,我想用自己的脚本覆盖已经给定的脚本

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


【解决方案1】:

即时劫持该部分将非常困难,但至少您可以停止计时器。

你需要做的就是打电话

clearInterval(countDown);

..在正确的上下文中。

此时extension architectureisolated worlds 的概念开始发挥作用。

扩展程序中唯一可以与网页交互的部分是内容脚本。但是,内容脚本存在于单独的上下文中:

内容脚本在称为孤立世界的特殊环境中执行。他们可以访问被注入页面的 DOM,但不能访问页面创建的任何 JavaScript 变量或函数。它查看每个内容脚本,就好像它正在运行的页面上没有执行其他 JavaScript。反过来也是如此:页面上运行的 JavaScript 不能调用任何函数或访问任何由内容脚本定义的变量。

但是您需要访问页面的 JavaScript。有办法,injecting your code into the page as a &lt;script&gt; tag

var script = document.createElement('script');
script.textContent = "clearInterval(countDown);";
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2012-08-24
    • 2013-03-09
    • 2012-06-20
    相关资源
    最近更新 更多