javascript - 使用 chrome 扩展覆盖用户定义的函数以使用 native 函数

标签 javascript google-chrome-extension

我对 JS 相当陌生,并且创建了一个 chrome 扩展,其中使用了 Array.filter 函数,但是对于某些网站,网站所有者创建了自己的 Array.filter 函数,其行为与内置函数不同。有什么方法可以覆盖这个用户定义的函数并获取该函数的 native 行为。任何帮助将不胜感激。

最佳答案

要保存原始的 Array#filter 方法,只需将其保存到变量中,然后在需要时使用 call() 来使用它。 :

//Saving the original method
var ArrayFilter = Array.prototype.filter;
//Then whenever needing to use it, call it by using call()
var someArray = [1,2,3];
var filteredArray = ArrayFilter.call(someArray,function(){ /* your filter callback */ });

现在您需要在创建修改后的 filter() 方法的脚本之前运行此命令。您必须通过更改内容脚本的加载位置来完成此操作,以便它可以加载其他代码。这是通过设置run_at来完成的。在 list 中设置:

list :

"content_scripts": [
  {
    "matches": ["http://*.example.com/*"],
    "run_at": "document_start",
    "js": ["contentScript.js"]
  }
],

contentScript.js

//injecting the script into the page
//or however you are currently doing it
var yourScript = document.createElement('script');
document.head.appendChild(yourScript);
yourScript.textContent = "/* your js code */";

关于javascript - 使用 chrome 扩展覆盖用户定义的函数以使用 native 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53386921/

相关文章:

javascript - jQuery UI DatePicker 主题

javascript - 如何打开下载的文件?

css - 显示不同屏幕的 chrome 扩展中的弹出窗口

javascript - jquery 可见性选择器

javascript - 功能检测不适用于 Internet Explorer 中的事件

javascript - 在 HTML 上方绘制箭头

javascript - 对传入 JS 函数的变量进行插值

google-chrome-extension - Chrome扩展程序背景页面html不起作用

javascript - 给定特定 URL,使用 Javascript 获取页面源

javascript - background.js 中的 Chrome 扩展 keydown 监听器