我希望在运行方法之前将变量注入页面。情况如下
CUSTOM JS CAN GO HERE
my.var = 'cake';
my.function();
我无权直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些 JS。基本上我需要在 my.function() 运行之前用其他东西覆盖 my.var 变量。有没有办法做到这一点?(该站点正在运行 jQuery 1.4.2。
谢谢丹
我希望在运行方法之前将变量注入页面。情况如下
CUSTOM JS CAN GO HERE
my.var = 'cake';
my.function();
我无权直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些 JS。基本上我需要在 my.function() 运行之前用其他东西覆盖 my.var 变量。有没有办法做到这一点?(该站点正在运行 jQuery 1.4.2。
谢谢丹
基本上我需要在 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();
my.var