Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在chrome中重写Javascript文件_Javascript_Google Chrome - Fatal编程技术网

在chrome中重写Javascript文件

在chrome中重写Javascript文件,javascript,google-chrome,Javascript,Google Chrome,我想用chrome中类似javascript文件的我自己的版本覆盖javascript文件 让我解释一下: 比如说一个站点的http://example.com“电话”http://example.com/script/somescript.js" 我要做的是覆盖文件的http://example.com/script/somescript.js'我自己的版本位于'http://localhost/script/somescript.js" 我需要有效地修改原始Javascript文件中的函

我想用chrome中类似javascript文件的我自己的版本覆盖javascript文件

让我解释一下:

  • 比如说一个站点的http://example.com“电话”http://example.com/script/somescript.js"

  • 我要做的是覆盖文件的http://example.com/script/somescript.js'我自己的版本位于'http://localhost/script/somescript.js"

  • 我需要有效地修改原始Javascript文件中的函数


  • Chrome中有用于这些目的的插件和工具:

  • (由Chrome 65支持)
  • 您可能还想使用,这是一个基于mitmproxy的devtools扩展,允许您在本地编辑远程文件,并将其直接提供给Chrome。(但安装和使用它更麻烦)

  • 选择一个更容易使用的工具。

    Chrome中有用于这些目的的插件和工具:

  • (由Chrome 65支持)
  • 您可能还想使用,这是一个基于mitmproxy的devtools扩展,允许您在本地编辑远程文件,并将其直接提供给Chrome。(但安装和使用它更麻烦)

  • 选择一个更易于使用的脚本。

    您可以通过添加(或在控制台中执行)此脚本将文件加载到页面中

    window.onload = function () {
      var script = document.createElement('script');
      script.src = '//localhost/your/script';
      script.onload = function() {
        console.log('your script have been loaded');
      }
      document.body.appendChild(script);
    }
    

    如果要覆盖的文件包含全局函数/变量,则将使用文件中的新版本进行覆盖,或者如果要覆盖的元素具有名称空间,则只需遵循路径(例如
    My.namespace.method=myNewMethod

    ,您可以通过添加(或在控制台中执行)将文件加载到页面中这个脚本

    window.onload = function () {
      var script = document.createElement('script');
      script.src = '//localhost/your/script';
      script.onload = function() {
        console.log('your script have been loaded');
      }
      document.body.appendChild(script);
    }
    

    如果要覆盖的文件包含全局函数/变量,则将使用文件中的新版本进行覆盖,或者如果要覆盖的元素具有名称空间,则只需遵循路径(例如
    My.namespace.method=myNewMethod

    ,您可以自己创建一个chrome扩展。如果您使用像这样的工具,它非常简单,只需几分钟。创建一个新目录并运行生成器

    yo chrome-extension
    
    输入扩展名和简短说明。选择
    页面操作
    和您想要使用的
    内容脚本
    。你可以忽略其他的选择-跟随,但这确实是直截了当的

    ? What would you like to call this extension? insert-script
    ? How would you like to describe this extension? replace a function with another function
    ? Would you like to use UI Action? Page Action
    ? Would you like more UI Features? Content Scripts
    ? Would you like to set permissions? 
    
    ……等等。现在有了这样的目录结构

    app
      bower_components
      images
      _locales
      scripts.babel
          background.js
          chromereload.js
          contentscript.js
    
    无法用另一个脚本替换已加载的现有远程脚本,因为该脚本已加载到DOM中。但您可以在正文末尾插入一个新脚本,该脚本将覆盖要替换的函数。函数是变量,如果向文档中添加与现有函数同名的新函数,将执行新函数而不是旧函数,就像声明与现有变量同名的新变量一样。现在打开并编辑
    contentscript.js

    “严格使用”;
    log(“\'Allo\'Allo!内容脚本”);
    
    代码可能是这样的

    “严格使用”;
    变量代码=`
    函数foo(){
    警报(“foo”);
    }
    `;
    var script=document.createElement('script');
    script.textContent=代码;
    document.body.appendChild(脚本);
    
    请注意。我们需要将代码作为字符串插入,但使用反勾号更具可读性。将
    foo()
    替换为要重写的函数

    不需要部署或绑定。您可以立即从运行生成器的路径安装扩展

  • 转到
    chrome://extensions
  • 检查开发人员模式
  • 单击上载未打包的扩展
  • 从路径中选择
    manifest.json
  • 之后,当您对
    contentscript.js
    进行更改时,只需点击扩展页面上的重新加载即可
    您可以自己创建一个chrome扩展。如果您使用像这样的工具,它非常简单,只需几分钟。创建一个新目录并运行生成器

    yo chrome-extension
    
    输入扩展名和简短说明。选择
    页面操作
    和您想要使用的
    内容脚本
    。你可以忽略其他的选择-跟随,但这确实是直截了当的

    ? What would you like to call this extension? insert-script
    ? How would you like to describe this extension? replace a function with another function
    ? Would you like to use UI Action? Page Action
    ? Would you like more UI Features? Content Scripts
    ? Would you like to set permissions? 
    
    ……等等。现在有了这样的目录结构

    app
      bower_components
      images
      _locales
      scripts.babel
          background.js
          chromereload.js
          contentscript.js
    
    无法用另一个脚本替换已加载的现有远程脚本,因为该脚本已加载到DOM中。但您可以在正文末尾插入一个新脚本,该脚本将覆盖要替换的函数。函数是变量,如果向文档中添加与现有函数同名的新函数,将执行新函数而不是旧函数,就像声明与现有变量同名的新变量一样。现在打开并编辑
    contentscript.js

    “严格使用”;
    log(“\'Allo\'Allo!内容脚本”);
    
    代码可能是这样的

    “严格使用”;
    变量代码=`
    函数foo(){
    警报(“foo”);
    }
    `;
    var script=document.createElement('script');
    script.textContent=代码;
    document.body.appendChild(脚本);
    
    请注意。我们需要将代码作为字符串插入,但使用反勾号更具可读性。将
    foo()
    替换为要重写的函数

    不需要部署或绑定。您可以立即从运行生成器的路径安装扩展

  • 转到
    chrome://extensions
  • 检查开发人员模式
  • 单击上载未打包的扩展
  • 从路径中选择
    manifest.json
  • 之后,当您对
    contentscript.js
    进行更改时,只需点击扩展页面上的重新加载即可
    您可以通过一个简单的chrome扩展来轻松实现这一点,如。以下是步骤: