0

我希望在运行方法之前将变量注入页面。情况如下

CUSTOM JS CAN GO HERE

my.var = 'cake';
my.function();

我无权直接修改页面,但是页面顶部有一个内容区域,如果需要,我可以添加一些 JS。基本上我需要在 my.function() 运行之前用其他东西覆盖 my.var 变量。有没有办法做到这一点?(该站点正在运行 jQuery 1.4.2。

谢谢丹

4

1 回答 1

3

基本上我需要在 my.function() 运行之前用其他东西覆盖 my.var 变量。有没有办法做到这一点?

var oldfunction = my.function;
my.function = function () {
    my.var = "whatever you want";
    oldfunction.apply(this, arguments);
}

当然,如果mymy.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同样的方式重新定义或其中的东西)。

基本上,在这种情况下,你唯一能做的就是写(假设somethingfunction () { 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

于 2012-06-29T05:19:58.443 回答