gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:00:58 24 4
gpt4 key购买 nike

我对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com