我希望在运行方法之前将变量注入页面。情况如下
CUSTOM JS CAN GO HERE
my.var = 'cake';
my.function();
我没有权限可以直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些JS。基本上我需要在my.function()运行之前用其他东西覆盖my.var变量。有没有办法做到这一点? (该网站正在运行jQuery 1.4.2。
由于 丹
答案 0 :(得分:3)
基本上我需要在my.function()运行之前用其他东西覆盖my.var变量。有没有办法做到这一点?
var oldfunction = my.function;
my.function = function () {
my.var = "whatever you want";
oldfunction.apply(this, arguments);
}
当然,如果my
或my.function
未被代码覆盖,则无法在调用my.function
之前直接修改(my.var
是)。
例如,在以下场景中:
///your code goes here
///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();
你想要的是不可能的(除非你能够以相同的方式重新定义something
或其中的某些东西)。
基本上,在这种情况下,你唯一能做的就是写(让我们假设something
是function () { alert(my.var) }
)
var oldalert = window.alert;
window.alert = function (message) {
oldalert(message === 'cake' ? 'whatever you want' : message);
}
嗯,你有个主意。
在my.var = 'cake';
和my.function();
之间注入部分代码,从另一方面来说,不可能。粗略地说,您可以选择两个选项,无论您的代码是在my.var = 'cake';
之前还是在my.function();
之后执行。在my.var = 'cake';
之前执行你的代码是不可能的my.function();
之前是不可能的(如果我们说的是生产环境;当然你可以使用调试器手动做任何事情,如果你需要修改{{1}用于调试目的)。