我想使用通过 Google Chrome 扩展程序运行的注入 javascript 从页面中删除 javascript 函数。
出于问题的目的,让我们调用我要删除 testtest 的示例函数。在这种情况下,该函数在页面上如下所示:
var testtest() {
somecode bla bla bla;
somecode bla bla bla;
somecode bla bla bla;
return false;
}
基本上我想删除或阻止功能 testtest 在页面上运行。
我正在尝试使用 javascript 替换方法来执行此操作,但它不起作用。如果这不可能,我想要一个替代解决方案来实现我的最终目标(防止该功能在页面上运行)。
我收到 Hello World 弹出窗口,这意味着脚本正在页面上运行,但代码没有被替换。
这是我使用 javascript 替换方法的尝试:
尝试 1:
alert("Hello World!");
window.location = loc.replace(testtest, "aaaaa");
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
--
尝试 2:
alert("Hello World!");
loc.replace(testtest, "aaaaa");
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
--
尝试 3:
alert("Hello World!");
testtest= "aaaaa";
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
--
尝试 4:
alert("Hello World!");
var str="testtest";
var n=str.replace("testtest","aaaaa");
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
也许 javascript replace 方法不是实现我的最终目标的正确方法。我并不真正关心我是如何做到的,只要我实现了我的目标。请帮我找到解决方案。
更新:我尝试了其他三种方法,但它们也失败了。
尝试 5:
alert("Hello World!");
function pacifyGlobalFunction(testtest) {
Object.defineProperty(
window,
testtest,
{
value: function () {},
configurable: true // permit future Object.defineProperty
}
);
}
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
--
尝试 6:
alert("Hello World!");
Object.defineProperty(window, 'testtest', {
value: function(){/*This function cannot be overridden*/}
});
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
--
尝试 7:
alert("Hello World!");
var actualCode = '(' + function() {
window.testtest = null;
} + ')();';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
结论:
“Hello World”弹出窗口:成功
代码已替换:失败
所以我仍然需要一个解决方案。